Página 1 de 1

Restar dos fechas

NotaPublicado: 2006-07-06 17:40 @778
por scorpion
Hola a todos...

¿Cómo podría restar dos fechas ??? que el resultado sea en días

¿Cómo podria convertir un timestamp a fecha ??? no necesito las horas, minutos y segundos, solo los días, meses y años...

Gracias por adelantado...

saludos...

lierly

NotaPublicado: 2006-07-06 17:57 @789
por explorer
En este foro hay muchos mensajes relativos a cálculo de fechas. Usa el sistema de búsqueda.

También hay una respuesta sobre esto en el perlfaq4: How can I compare two dates and find the difference?

En resumen, con el módulo DateTime lo tienes 'casi' todo hecho. Aquí tienes un ejemplo:
Código: Seleccionar todo
#!/usr/bin/perl -l
use DateTime;

my $fecha1 = DateTime->new (
    day     => 15,
    month   => 8,
    year    => 2006,
);

my $hoy = DateTime->now->set_time_zone("local")->truncate( to => 'day' );

my $diferencia = $fecha1->delta_days( $hoy );

print $fecha1;
print $hoy;
print $diferencia->in_units('days');
2006-08-15T00:00:00
2006-07-07T00:00:00
39

$fecha se inicializa con el valor del 15 de julio de este año.
$hoy se inicializa con la fecha actual. Por defecto DateTime lo pone al horario GMT, pero me interesa que siga con la hora actual mía (las 01:15 ahora mismo), y luego, quiero que lo trunque a múltiplo de día (es decir, que la hora sea las 00:00, ya que vamos a hacer diferencias entre días enteros).

Estoy obligado a hacer lo del set_time_zone y el truncate, porque sino, me diría que hay 40 días de diferencia: si yo estoy ahora en las 01:15 del 7 de julio, en realidad todavía son las 23:15 del 6 de julio en horario GMT... (el día anterior, luego suma un día más de diferencia).

Como ves, es muy completo y con pocas líneas te da soluciones.