Hola a todos,
A ver si me saben decir como puedo controlar que una cadena no se puede convertir a fecha por que sería una fecha incorrecta; es decir, si tengo cFecha = "30/02/2012", éta no se podrá convertir por que no existe el día 30 en febrero.
Seguro que es una chorrada pero a estas horas estoy bastante bloqueado.
Gracias,
Control fecha
Control fecha
Un Saludo
Carlos G.
FiveWin 19.06 + Harbour 3.2, BCC 7 Windows 10
Carlos G.
FiveWin 19.06 + Harbour 3.2, BCC 7 Windows 10
Re: Control fecha
Hola FiveWiDi: En la librería NF.lib de Harbour (tambien xHarbour), que se refiere a Nanforum.lib, en ella esta la funcion
FT_FDay(dFecha) Primer dia del mes, FirstDay
FT_LDay(dfecha) Ultimo dia del mes, LastDay
yo las uso en mis programas sin problemas.
Hay varias funciones de fecha muy útiles en esta librería.
Saludos
Ruben Fernandez.
FT_FDay(dFecha) Primer dia del mes, FirstDay
FT_LDay(dfecha) Ultimo dia del mes, LastDay
yo las uso en mis programas sin problemas.
Hay varias funciones de fecha muy útiles en esta librería.
Saludos
Ruben Fernandez.
- reinaldocrespo
- Posts: 918
- Joined: Thu Nov 17, 2005 5:49 pm
- Location: Fort Lauderdale, FL
Re: Control fecha
Y que tal esta idea?
Reinaldo.
Code: Select all
dDate := ctod( cFecha )
isGoodDate := ALLTRIM( DTOC( dDate ) ) == ALLTRIM( cFecha )
Reinaldo.
Re: Control fecha
Muchas gracias a ambos, me quedo con la de Reinaldo.
Este foro es una joya.
Gracias.
Este foro es una joya.
Gracias.
Un Saludo
Carlos G.
FiveWin 19.06 + Harbour 3.2, BCC 7 Windows 10
Carlos G.
FiveWin 19.06 + Harbour 3.2, BCC 7 Windows 10
Re: Control fecha
FiveWidi:
Ahí te va otra
LOCAL dFecha := CTOD(" / / ")
IF EMPTY(dFecha := CTOD("30/02/2012"))
MsgStop("Fecha erronea !")
ENDIF
Saludos
Ahí te va otra
LOCAL dFecha := CTOD(" / / ")
IF EMPTY(dFecha := CTOD("30/02/2012"))
MsgStop("Fecha erronea !")
ENDIF
Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
-
- Posts: 115
- Joined: Sat Mar 07, 2009 9:36 pm
- Location: Argentina
- Contact:
Re: Control fecha proba esto.
Si no tenes la libreria o usas xharbour este pequeño programa te resuelve tu problema
Puedes escribir de la siguiente forma
Local fFecha := CTOD("03/02/2012") // la fecha que tu quieres consultar
Local uFecha := Date() // le das forma a la variable
uFecha := UltimoDia( fFecha ) // aqui la funcion te devuelve la fecha con el ultimo dia del mes
//---------------------------------------------------------------------------//
// Method UltimoDia( ) Retorna el el final de un mes
//--------------------------------------------------------------------------//
Function UltimoDia(xFecha)
Local xMes := Month( xFecha )
Local xAno := Year( xFecha )
Local nDias := 1
Local MiFecha := Date()
MiFecha := CTOD("01/"+StrZero(Month(xFecha),2)+"/"+StrZero(Year(xFecha),4))
Do While nDias < 31
MiFecha := MiFecha + 1
If Month( MiFecha ) > xMes
Exit
EndIf
nDias := nDias + 1
If nDias = 31
Exit
EndIF
EndDo
MiFecha := CTOD( StrZero(nDias,2)+"/"+StrZero(xMes,2)+"/"+StrZero(xAno,4) )
Return( MiFecha )
//--------------------------------------------------------------------------//
Puedes escribir de la siguiente forma
Local fFecha := CTOD("03/02/2012") // la fecha que tu quieres consultar
Local uFecha := Date() // le das forma a la variable
uFecha := UltimoDia( fFecha ) // aqui la funcion te devuelve la fecha con el ultimo dia del mes
//---------------------------------------------------------------------------//
// Method UltimoDia( ) Retorna el el final de un mes
//--------------------------------------------------------------------------//
Function UltimoDia(xFecha)
Local xMes := Month( xFecha )
Local xAno := Year( xFecha )
Local nDias := 1
Local MiFecha := Date()
MiFecha := CTOD("01/"+StrZero(Month(xFecha),2)+"/"+StrZero(Year(xFecha),4))
Do While nDias < 31
MiFecha := MiFecha + 1
If Month( MiFecha ) > xMes
Exit
EndIf
nDias := nDias + 1
If nDias = 31
Exit
EndIF
EndDo
MiFecha := CTOD( StrZero(nDias,2)+"/"+StrZero(xMes,2)+"/"+StrZero(xAno,4) )
Return( MiFecha )
//--------------------------------------------------------------------------//
- reinaldocrespo
- Posts: 918
- Joined: Thu Nov 17, 2005 5:49 pm
- Location: Fort Lauderdale, FL
Re: Control fecha
Solo para que les sirva de información, no hace falta escribir funciones para buscar el último día del mes.
Si lo que se busca es el último día del mes, Harbour ya tiene una función nativa: EoM( dDate ) devuelve el último día del mes dDate. Si lo que se busca el es primer día del mes, Harbour ya tiene una función nativa: BoM( dDate ) devuelve el primer día del mes. Igual existe EoQ (end of quarter), EoY (end of Year)....
Pero no me parece que esto es lo que se pregunta en este hilo.
Saludos,
Reinaldo.
Si lo que se busca es el último día del mes, Harbour ya tiene una función nativa: EoM( dDate ) devuelve el último día del mes dDate. Si lo que se busca el es primer día del mes, Harbour ya tiene una función nativa: BoM( dDate ) devuelve el primer día del mes. Igual existe EoQ (end of quarter), EoY (end of Year)....
Pero no me parece que esto es lo que se pregunta en este hilo.
Saludos,
Reinaldo.
Re: Control fecha
Juan Carlos
Para sacar el último día podes usar esta función
Saludos,
Adhemar
Para sacar el último día podes usar esta función
Code: Select all
DaysInMonth(Month(Date()))
Adhemar
Saludos,
Adhemar C.
Adhemar C.
Re: Control fecha
Si lo que estas buscando es el último día del mes y sabes el mes y el año, lo que yo hago es al 1 del mes siguiente le resto 1, excepto si el mes es 12 que se que son siempre 31.
En tu caso lo que haría es:
Un saludo y espero que te sirva
Carlos
En tu caso lo que haría es:
Code: Select all
cmonth = 2
cyear = 2012
if cmonth = 12
cfecha = ctd("31/12/" + str(cyear,4,0))
else
cfecha = ctod("01/" + str(cmonth+1,2,0) +"/" + str(cyear,4,0)) - 1
endif
Carlos
Colt Hop ED, S.L.
Carlos Blas Fernández Domínguez
Tlfo: 645847093
E-Mail: carlos@colthop.es
Nunca se termina de aprender, por eso necesito siempre ayuda.
Carlos Blas Fernández Domínguez
Tlfo: 645847093
E-Mail: carlos@colthop.es
Nunca se termina de aprender, por eso necesito siempre ayuda.