Discussion:
trabajar con fechas
(demasiado antiguo para responder)
Fernando
2003-10-30 17:12:27 UTC
Permalink
Hola,
quiero hacer un programa que calcule el día anterior al del día que se
ejecuta el programa (si hoy es 20031030, el programa debería sacar el
20031029). Con el siguiente código consigo la fecha actual:

#include <stdio.h>
#include <time.h>

int main() {
struct tm *ptr;
time_t ltime;
char str[80];

ltime = time(NULL); //return system time
ptr = localtime(&ltime); // return time in the form of tm structure
strftime(str,80,"%Y%m%d",ptr);
printf("%s\n",str);
}

pero no se como restarle un día.
¿Alguien me puede ayudar?

Gracias,
Fernando
Julián Albo
2003-10-30 17:32:16 UTC
Permalink
Post by Fernando
quiero hacer un programa que calcule el día anterior al del día que se
ejecuta el programa (si hoy es 20031030, el programa debería sacar el
time te devuelve la fecha en formato unix, que es el número de segundos
transcurridos desde "el principio de los tiempos". Por tanto, le restas
el número de segundos que tiene un día y listo.

Sólo te fallará si haces esa operación a las 00:00:00 del día después de
uno que contenga un segundo de salto, creo.

Salu2
Fernando
2003-10-30 17:58:44 UTC
Permalink
Post by Fernando
quiero hacer un programa que calcule el día anterior al del día que se
ejecuta el programa (si hoy es 20031030, el programa debería sacar el
time te devuelve la fecha en formato unix, que es el número de segundos
transcurridos desde "el principio de los tiempos". Por tanto, le restas
el número de segundos que tiene un día y listo.

Sólo te fallará si haces esa operación a las 00:00:00 del día después de
uno que contenga un segundo de salto, creo.

Salu2


Es perfecto ha funcionado.

Muchas gracias,

Fernando
Fernando Arbeiza
2003-10-30 17:37:31 UTC
Permalink
Post by Fernando
int main() {
struct tm *ptr;
time_t ltime;
char str[80];
ltime = time(NULL); //return system time
ptr = localtime(&ltime); // return time in the form of tm structure
strftime(str,80,"%Y%m%d",ptr);
printf("%s\n",str);
}
pero no se como restarle un día.
¿Alguien me puede ayudar?
Así, sin pensarlo mucho (así que cuidadín), algo así:

ltime = ltime - (24 * 60 * 60);

porque enredar en el struct tm es más complicado.

Un saludo.
--
Fernando Arbeiza <URL: mailto:***@ono.com>
Crea tu propio Linux: <URL: http://www.escomposlinux.org/lfs-es>
Fernando
2003-10-30 18:00:57 UTC
Permalink
Perfecto, tambien funciona.

Muchas gracias,

Fernando
Post by Fernando Arbeiza
Post by Fernando
int main() {
struct tm *ptr;
time_t ltime;
char str[80];
ltime = time(NULL); //return system time
ptr = localtime(&ltime); // return time in the form of tm structure
strftime(str,80,"%Y%m%d",ptr);
printf("%s\n",str);
}
pero no se como restarle un día.
¿Alguien me puede ayudar?
ltime = ltime - (24 * 60 * 60);
porque enredar en el struct tm es más complicado.
Un saludo.
--
Crea tu propio Linux: <URL: http://www.escomposlinux.org/lfs-es>
Loading...