FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Archivos FTP con Fecha incorrecta en FW
Posts: 625
Joined: Wed Mar 14, 2007 06:49 PM
Archivos FTP con Fecha incorrecta en FW
Posted: Tue Oct 08, 2013 04: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?



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
Posts: 625
Joined: Wed Mar 14, 2007 06:49 PM
Re: Archivos FTP con Fecha incorrecta en FW
Posted: Wed Oct 09, 2013 01:42 PM
+1 UP

Lo he intentado de esta manera pero no me funciona:

Code (fw): Select all Collapse
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
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: Archivos FTP con Fecha incorrecta en FW
Posted: Wed Oct 09, 2013 07: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)
Posts: 625
Joined: Wed Mar 14, 2007 06:49 PM
Re: Archivos FTP con Fecha incorrecta en FW
Posted: Wed Oct 09, 2013 08: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 (fw): Select all Collapse
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 ))



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... :-) :-)
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
Posts: 625
Joined: Wed Mar 14, 2007 06:49 PM
Re: Archivos FTP con Fecha incorrecta en FW
Posted: 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 (fw): Select all Collapse
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. :-) :-) :-)
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
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: Archivos FTP con Fecha incorrecta en FW
Posted: Wed Oct 09, 2013 10:56 PM
Code (fw): Select all Collapse
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 (fw): Select all Collapse
#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)

Continue the discussion