Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

¿Como puedo restar x años a una fecha? urgente pls

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: ¿Como puedo restar x años a una fecha? urgente pls Responder citando

Now() - 10 años me devuelva algo parecido a 16/6/1999
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Otra opción:
Código:
#include <DateUtils.hpp>
TDateTime nuevaFecha = IncYear(Now(), -10);
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

...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
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

thx
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Y eso que no estamos hablando ni de política, futbol, o religión Wink

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
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: mi intencion ayudar Responder citando

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
Ver perfil de usuario Enviar mensaje privado Enviar email
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.