In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Calcular fechas

Foro de Xailer profesional en español
Responder
PEDRO DE LEON RODAS[1]
Mensajes: 136
Registrado: Jue Jul 05, 2007 4:52 am

Calcular fechas

Mensaje por PEDRO DE LEON RODAS[1] »

¿ Como puedo hacer para calcular una fecha por medio de los meses ?
Ejemplo:
tengo una variable de memeria con la fecha actual y quiero
calcular una proxima fecha pero introduciento cierta cantidad de meses:
var_meses=15
var_fecha_actual=ctod("14/07/2007")
var_fecha_proxima= var_fecha_actual +15
en Foxpro lo hacia de la siguiente manera:
var_fecha_proxima=
GOMONTH(var_fecha_actual,+var_meses)
el resultado
que me da es: 14/10/2008
¿ En xailer como lo hago ?
!!!!!!!! ES URGENTE TODA AYUDA !!!!!!!!!!!!!
Gracias
Rolando
Mensajes: 191
Registrado: Lun May 08, 2006 2:10 pm

Calcular fechas

Mensaje por Rolando »

Pedro:
FUNC ADIMES( dFecha, nCant )
LOCAL nAno := YEAR(dFecha),;
nMes := MONTH( dFecha ),;
nHoy := DAY( dFecha )
FOR M_A := 1 TO nCant
nMes ++
IF nMes = 13
nMes = 1
nAno ++
END
NEXT
nHoy :=
IIF(nMes=2.AND.(nHoy=29.OR.nHoy=30.OR.nHoy=31),IIF((nAno%4)# 0,28,29),nHoy)
nHoy := IIF(nHoy=31.AND.(nMes=4.OR.nMes=6.OR.nMes=9.OR.nMes=11),30,n Hoy)
RETURN(CTOD(STR(nHoy,2,0)+"/"+STR(nMes,2,0)+"/"+STR(nAno,4,0)))
var_fecha_actual=ctod("14/07/2007")
var_fecha_proxima= ADIMES(var_fecha_actual, 15)
Saludos
"PEDRO DE LEON RODAS" <deleonpe@terra.com.mx> escribió en el mensaje
news:[email=46999ca2@ozsrv2.ozlan.local...]46999ca2@ozsrv2.ozlan.local...[/email]
>¿ Como puedo hacer para calcular una fecha por medio de los meses ?
>
> Ejemplo:
> tengo una variable de memeria con la fecha actual y quiero
> calcular una proxima fecha pero introduciento cierta cantidad de meses:
> var_meses=15
> var_fecha_actual=ctod("14/07/2007")
> var_fecha_proxima= var_fecha_actual +15
>
>
> en Foxpro lo hacia de la siguiente manera:
>
> var_fecha_proxima= GOMONTH(var_fecha_actual,+var_meses)
>
> el
> resultado que me da es: 14/10/2008
>
>
> ¿ En xailer como lo hago ?
>
>
> !!!!!!!! ES URGENTE TODA AYUDA !!!!!!!!!!!!!
>
> Gracias
>
Rene Flores
Mensajes: 620
Registrado: Jue Mar 23, 2006 2:39 am

Calcular fechas

Mensaje por Rene Flores »

PEDRO:
Muy sencillo, en Clipper solo sumale el numero de dias que quieras aumentar:
dFecha := DATE()+(var_meses*30)
si var_meses es 15, va a multiplicar esto por 30 y será 450, que sumados
a la fecha actual, te dará un aproximado bastante exacto a la fecha
que quieres, obviamente los meses no todos tiene 30 dias, pero el resto
es facil.
Al vuelo he hecho esto, faltaria pulirlo
Function SumaMeses(dFecha,nMeses)
LOCAL cFecha
DEFAULT dFecha TO DATE()
DEFAULT nMeses TO 0
cFecha := SUBSTR(DTOS(dFecha+(nMeses*30)),1,6)+ALLTRIM(STR(DAY(dFecha) ))
RETURN (STOD(cFecha))
Saludos
Rene Flores
http://www.ciber-tec.com
DE LEON RODAS escribió:
> ¿ Como puedo hacer para calcular una fecha por medio de los meses ?
>
> Ejemplo:
> tengo una variable de memeria con la fecha actual y quiero
> calcular una proxima fecha pero introduciento cierta cantidad de meses:
> var_meses=15
> var_fecha_actual=ctod("14/07/2007")
> var_fecha_proxima= var_fecha_actual +15
>
>
> en Foxpro lo hacia de la siguiente manera:
> var_fecha_proxima=
> GOMONTH(var_fecha_actual,+var_meses)
>
> el resultado
> que me da es: 14/10/2008
>
>
> ¿ En xailer como lo hago ?
>
>
> !!!!!!!! ES URGENTE TODA AYUDA !!!!!!!!!!!!!
>
> Gracias
>
>
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9458
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Calcular fechas

Mensaje por ignacio »

Pedro,
A continuación dejo una función propia que te permite sumar meses naturales.
Por ejemplo contempla sumar 30 días al 31 de enero, y te devuelve 28 o 29 de
febrero (si es bisiesto)
Un saludo,
FUNCTION SumDias( dFecha, nDias )
LOCAL nMeses, nMes, nPer, nDia, nDesp, nLastDay
nMeses := Int( nDias / 30 )
nDesp := nDias - ( nMeses * 30 )
nDia := Day( dFecha )
IF Month( dFecha ) + nMeses > 12
nMes := Month( dFecha ) + nMeses - 12
nPer := Year( dFecha ) + 1
ELSE
nMes := Month( dFecha ) + nMeses
nPer := Year( dFecha )
ENDIF
dFecha := CtoD( "01-" + Str( nMes, 2 ) +"-"+ Substr( str( nPer, 4 ),
3, 2 ) )
nLastDay := LastDay( dFecha )
nDia := Min( nDia, nLastDay )
dFecha := CtoD( Str( nDia,2 ) + "-" +;
Str( nMes,2 ) + "-" +;
Substr( Str( nPer, 4 ), 3, 2 ) ) + nDesp
RETURN dFecha
"Rene Flores" <"rflores[nospam]"@ciber-tec.com> escribió en el mensaje
news:[email=469ae07d@ozsrv2.ozlan.local...]469ae07d@ozsrv2.ozlan.local...[/email]
> PEDRO:
>
> Muy sencillo, en Clipper solo sumale el numero de dias que quieras
> aumentar:
>
> dFecha := DATE()+(var_meses*30)
>
> si var_meses es 15, va a multiplicar esto por 30 y será 450, que sumados a
> la fecha actual, te dará un aproximado bastante exacto a la fecha que
> quieres, obviamente los meses no todos tiene 30 dias, pero el resto es
> facil.
>
> Al vuelo he hecho esto, faltaria pulirlo
>
> Function SumaMeses(dFecha,nMeses)
> LOCAL cFecha
> DEFAULT dFecha TO DATE()
> DEFAULT nMeses TO 0
> cFecha := SUBSTR(DTOS(dFecha+(nMeses*30)),1,6)+ALLTRIM(STR(DAY(dFecha) ))
> RETURN (STOD(cFecha))
>
> Saludos
>
> Rene Flores
> http://www.ciber-tec.com
>
>
>
> DE LEON RODAS escribió:
>> ¿ Como puedo hacer para calcular una fecha por medio de los meses ?
>>
>> Ejemplo:
>> tengo una variable de memeria con la fecha actual y
>> quiero calcular una proxima fecha pero introduciento cierta cantidad de
>> meses:
>> var_meses=15
>> var_fecha_actual=ctod("14/07/2007")
>> var_fecha_proxima= var_fecha_actual +15
>>
>>
>> en Foxpro lo hacia de la siguiente manera:
>>
>> var_fecha_proxima= GOMONTH(var_fecha_actual,+var_meses)
>>
>> el
>> resultado que me da es: 14/10/2008
>>
>>
>> ¿ En xailer como lo hago ?
>>
>>
>> !!!!!!!! ES URGENTE TODA AYUDA !!!!!!!!!!!!!
>>
>> Gracias
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Responder