| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
ZHAX1 Master

Registrado: 09 Mar 2007Mensajes: 191
|
Publicado: Mar 16 Jun, 2009 12:50 pm Asunto: ¿Como puedo restar x años a una fecha? urgente pls |
|
|
| Now() - 10 años me devuelva algo parecido a 16/6/1999 |
|
| Volver arriba |
|
 |
juanma Cmdr

Registrado: 17 Nov 2005Mensajes: 127Ubicación: Almeria - España
|
Publicado: Mar 16 Jun, 2009 4:36 pm Asunto: |
|
|
Puedes hacer algo parecido a:
| Código: | unsigned short nY, nM, n0;
Date().DecodeDate(&nY, &nM, &n0);
TDateTime dF = TDateTime(nY-10, nM, n0); |
Yo utilizo mucho una funcion para el año anterior a una fecha dada:
| Código: | TDateTime FYearBefore(TDateTime dF)
{
unsigned short nY, nM, n0;
dF.DecodeDate(&nY, &nM, &n0);
if ((nM==2)&&(n0==29)) n0 = 28;
return TDateTime(nY-1, nM, n0);
} |
Saludos |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Mar 16 Jun, 2009 4:51 pm Asunto: |
|
|
Otra opción:
| Código: | #include <DateUtils.hpp>
TDateTime nuevaFecha = IncYear(Now(), -10); |
|
|
| Volver arriba |
|
 |
escafandra Master

Registrado: 29 Nov 2007Mensajes: 625Ubicación: Madrid - España
|
Publicado: Mar 16 Jun, 2009 11:30 pm Asunto: |
|
|
...Y como algunas versiones del Builder no tienen la función IncYear, nada nos impide restar años así:
| Código: | Date = Date - nAños*365; |
El único problema se deriva de detectar los años bisiestos y actuar en consecuencia definiendo el comportamiento de la resta.
Saludos. |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Mie 17 Jun, 2009 7:18 am Asunto: |
|
|
| escafandra escribió: | ...Y como algunas versiones del Builder no tienen la función IncYear, nada nos impide restar años así:
| Código: | Date = Date - nAños*365; |
El único problema se deriva de detectar los años bisiestos y actuar en consecuencia definiendo el comportamiento de la resta. |
Solución: IncMonth, porque lo que si tiene todos los años son doce meses:
| Código: | Date = IncMonth(Date, -12 * nAnual); |
_________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
escafandra Master

Registrado: 29 Nov 2007Mensajes: 625Ubicación: Madrid - España
|
Publicado: Mie 17 Jun, 2009 9:59 pm Asunto: |
|
|
| Angel escribió: |
Solución: IncMonth, porque lo que si tiene todos los años son doce meses:
| Código: | Date = IncMonth(Date, -12 * nAnual); |
|
Pues así es, y IncMonth está en más versiones de Builder...
Saludos. |
|
| Volver arriba |
|
 |
ZHAX1 Master

Registrado: 09 Mar 2007Mensajes: 191
|
Publicado: Lun 29 Jun, 2009 12:09 pm Asunto: |
|
|
| thx |
|
| Volver arriba |
|
 |
ifrit Master


Registrado: 12 Jun 2007Mensajes: 509Ubicación: La Habana, Cuba
|
Publicado: Sab 11 Jul, 2009 4:30 pm Asunto: |
|
|
Hola foro
amigos como bien plantea _Leo existe una libreria en c++ que es DateUtils #include <DateUtils>, si la investigan bien veran el sin fin de facilidades que brinda! _________________ Todos somos ignorantes, lo que no todos ignoramos lo mismo... |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Lun 13 Jul, 2009 11:27 am Asunto: |
|
|
| ifrit escribió: | Hola foro
amigos como bien plantea _Leo existe una libreria en c++ que es DateUtils #include <DateUtils>, si la investigan bien veran el sin fin de facilidades que brinda! |
Pero no en todas las versiones de Builder. Yo uso la 5 y no tengo ese fichero DateUtils. _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
escafandra Master

Registrado: 29 Nov 2007Mensajes: 625Ubicación: Madrid - España
|
Publicado: Mar 14 Jul, 2009 12:16 am Asunto: |
|
|
| Angel escribió: |
Pero no en todas las versiones de Builder. Yo uso la 5 y no tengo ese fichero DateUtils. |
Concuerdo con Angel.
Saludos. |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Mar 14 Jul, 2009 2:00 am Asunto: |
|
|
Y eso que no estamos hablando ni de política, futbol, o religión
DateUtils viene desde la versión 6, no podría trabajar en una versión anterior a esta, quizás para algún pequeño proyecto. Y aunque uso también la 2009, me sigo sintiendo mucho mas comodo en el IDE de la 6, son ya unos cuantos años.. Preferiría tener todas las novedades de la 2009 con el IDE de la 6.. |
|
| Volver arriba |
|
 |
ifrit Master


Registrado: 12 Jun 2007Mensajes: 509Ubicación: La Habana, Cuba
|
Publicado: Sab 18 Jul, 2009 4:17 pm Asunto: mi intencion ayudar |
|
|
hola amigos , mi intencion de respuesta fue ayudar y ampliar la respuesta de Leo, ni mas ni menos. Yo empece a programar con el bcb6 por eso di mi opinion algo precipitada por lo que leo en sus respuestas de apoyo a Angel. Y por demas no utilizo el c++ 2009 porque sigo teniendo problemas con los reports aun no logro intrar a configurar la hoja que deseo imprimir me da error con ntdll.dll mis disculpas _________________ Todos somos ignorantes, lo que no todos ignoramos lo mismo... |
|
| Volver arriba |
|
 |
|