- 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