Archivos FTP con Fecha incorrecta en FW

Archivos FTP con Fecha incorrecta en FW

Postby cuatecatl82 » Tue Oct 08, 2013 4:13 pm

Tengo un problema en las fechas y horas en los archivos alojados en un servidor FTP: Si se dan cuenta con CuteFTP los muestra correcto, con mi Sistema y la utilidad pFTP de Javier LLoris Roig las fechas estan desfazadas 1 semana adelante, alguien ha detectado este fallo, ¿Cómo podría solucionarse?

Además de que no respetados la fecha y hora de creación de los archivos, pues devuelve la fecha y hora de alojamiento en el servidor. ¿Esto es corecto?

Image

Esto ya lo habia expuesto en este post, pero lo retomo porque creo que no era el sitio correcto para exponerlo.
http://forums.fivetechsupport.com/viewtopic.php?f=6&t=20501&p=152631#p152631

Quedo en espera de respuesta para despejar mis dudas.... Gracias..
Soluciones y Diseño de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
User avatar
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México

Re: Archivos FTP con Fecha incorrecta en FW

Postby cuatecatl82 » Wed Oct 09, 2013 1:42 pm

+1 UP

Lo he intentado de esta manera pero no me funciona:

Code: Select all  Expand view
MSGInfo(cPath+"/*.*")
cfiles:= oFTP:DIRECTORY(cPath+"/*.*")
MSGInfo(LEN(cfiles))


Me regresa un mensaje de que seha producido el siguiente respuesta del servidor:
226 Transfer Complete

Como obtener la fecha de un archivo alojado en un FTP...?


Maestro Antonio que podria hacer..?
Soluciones y Diseño de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
User avatar
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México

Re: Archivos FTP con Fecha incorrecta en FW

Postby carlos vargas » Wed Oct 09, 2013 7:59 pm

* include/harbour.hbx
* src/rtl/dateshb.c
+ added new PRG function:
hb_TSToUTC( <tsLocal> ) -> <tsUTC>
+ added support for optional timestamp parameter in hb_UTCOffset()
function, current syntax is:
hb_UTCOffset( [ <tsLocal> ] ) -> <nSeconds>

los tros pueden ir por este lado. :-) o talvez la misma clase ftp tenga una opcion para manejar fecha UTC

salu2
carlos vargas
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
carlos vargas
 
Posts: 1683
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Archivos FTP con Fecha incorrecta en FW

Postby cuatecatl82 » Wed Oct 09, 2013 8:56 pm

Carlitos:

Gracias por la info pero tampoco funciono, revisando y repasando el código fuente de Harbour 3.0, especialmente el archivo FTPCLI.PRG que es el que contiene el Method ListFiles(), encontre que el fallo proviene de la función hb_SToD( cYear + CMONTH + cDay ), concretamente en la parte final, donde se arma el Array que devuelve ListFiles()

Code: Select all  Expand view
aFile[ F_NAME ] := SUBSTR( cEntry, nStart )
aFile[ F_DATE ] := hb_SToD( cYear + CMONTH + cDay )      ///-----Aqui el fallo
aFile[ F_TIME ] := cTime


Usando la función hb_SToD() de esta manera provoca un tremendo bug, lo comprobe haciendo esto:

MSGStop(cYear + CMONTH + cDay, hb_SToD( cYear + CMONTH + cDay ))

Image

Y no lo culpo, le esta dando como parametro una cadena de fechas representada con una longitud de 7 caracteres, cuando lo correcto seria enviarle los 8, para poder determinar mediante mes (01-12) y dia (01-31) cual es la fecha correcta...

Simplemente prueben estos ejemplos:
MSGInfo(hb_SToD( "2013" + "1" + "7" )) Devuelve " / / "
MSGInfo(hb_SToD( "2013" + "17" + "7" )) Devuelve " / / "


Alguien podria decirme cual es la diferencia entre hb_SToD() y CToD(), porque nos lian con 2 funciones que hacen lo mismo..?

Por ahora me queda hacer mi propia funcion hb_SToD(), espero no hechar a perder los manos de fechas internos de Harbour en mi Programa... :wink: :wink:
Soluciones y Diseño de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
User avatar
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México

Re: Archivos FTP con Fecha incorrecta en FW

Postby cuatecatl82 » Wed Oct 09, 2013 10:19 pm

Por el momento solucionado aunque de manera rudimentaria:

Tomando en cuenta como se tenga configurado SET DATE ya que tambien influye:

Code: Select all  Expand view
SET CENTURY ON
SET EPOCH TO 2000
SET DATE FORMAT TO "DD-MM-YYYY"
SET DECIMALS TO 2

/*------------------------------------------------------------------------------*/
FUNCTION hb_SToD(cDate) // Corregido para la Clase tFTPClient
/*------------------------------------------------------------------------------*/

LOCAL cBase:= ALLTRIM(cDate)
LOCAL nLong:= LEN(cBase)
LOCAL cA,cM,cD
LOCAL dDate

    IF nLong == 8
       cA:= SUBSTR(cBase,1,4)
       cM:= SUBSTR(cBase,5,2)
       cD:= SUBSTR(cBase,7,2)
ELSEIF nLong == 7
       cA:= SUBSTR(cBase,1,4)
       cM:= SUBSTR(cBase,5,2)
       cD:= SUBSTR(cBase,7,1)
ELSEIF nLong == 6
       cA:= SUBSTR(cBase,1,4)
       cM:= SUBSTR(cBase,5,1)
       cD:= SUBSTR(cBase,6,1)            
ENDIF
     
       dDate:= CTOD(STRZERO(VAL(cD),2)+"/"+STRZERO(VAL(cM),2)+"/"+cA)
           
RETURN dDate


Probado si le envio así:
"201311" ---> 01/01/2013
"2013111" ---> 01/11/2013
"20131111" ---> 11/11/2013



Si hubiera una forma más funcional o practica se agradeceria, lo importante es que funcione como debe ser. :mrgreen: :mrgreen: :mrgreen:
Soluciones y Diseño de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
User avatar
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México

Re: Archivos FTP con Fecha incorrecta en FW

Postby carlos vargas » Wed Oct 09, 2013 10:56 pm

Code: Select all  Expand view

MSGInfo(hb_SToD( "2013" + "1" + "7" )) Devuelve " / / "
MSGInfo(hb_SToD( "2013" + "17" + "7" )) Devuelve " / / "
 


esto es correcto, ambas cadenas de fechas construidas estan fallando, la idea es que hb_DtoS(dFecha) retorna una cadena "YYYYMMDD", hb_StoD(cFecha) transforma una cadena "YYYYMMDD" a formato fecha, de ello se desprende que:

"2013" + "1" + "7" -> "201317"
"2013" + "17" + "7" -> "2013177"

hb_StoD("201317")-> seria transformado a "2013-17-00" y luego a fecha la cual seria invalida dado que no existe el mes 17, retornando una fecha vacia.
hb_StoD("2013177")->seria transformado a "2013-17-10" y luego a fecha la cual seria invalida dado que no existe el mes 17, retornando una fecha vacia.

lo ideal es usar la funcion strzero(nNum,nSize)

hb_StoD( "2013" + strzero( 1, 2 ) + StrZero( 7, 2) ) -> "20130107" -> pasado a fecha 07-01-2013, aca estaria correcto.


Excelente la funcion que has desarrollado.

por si te fuera de utilidad una funcion DMY2DATE( nYear, nMonth, nDay ) ->dFecha
para cualqueira que la desee usar.

Code: Select all  Expand view

#pragma BEGINDUMP

#include "hbapi.h"
#include "hbdate.h"

/*funcion que construye una fecha en base a tres valores dados: año, mes, dia*/
HB_FUNC( DMY2DATE )
{
   int iDay   = hb_parni(1);
   int iMonth = hb_parni(2);
   int iYear  = hb_parni(3);

   hb_retd( iYear, iMonth, iDay );
}
#pragma ENDDUMP

 

salu2
carlos vargas
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
carlos vargas
 
Posts: 1683
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 65 guests