2010-11-16 14 views
11

Necesito leer 2 fechas y compararlas.¿Cuál es la mejor manera de comparar las fechas en Perl?

Una fecha es la fecha_actual (año, mes, fecha) la otra está determinada por la lógica comercial. Luego necesito comparar las 2 fechas y ver si una está antes que la otra.

¿Cómo puedo hacer lo mismo en Perl?

Estoy buscando una buena documentación, pero estoy encontrando tantos módulos de fecha en Perl. No sé cuál es apropiado para eso.

+0

Puede que le interese este [stack-exchange proposal] (http://area51.stackexchange.com/proposals/11464/code-review?referrer=aWNm_PdciyFqjFW8CUacGw2 "revisión del código"). Está casi listo para comenzar la versión beta, solo necesita algunos más. – greatwolf

Respuesta

18

Uno de los módulos de fecha más populares es DateTime que manejará todos los casos de esquina y otros asuntos relacionados con la fecha matemática.

Este enlace es un FAQ para DateTime que puede ayudar a empezar:

La forma en que funciona el módulo DateTime es que se convierta sus fechas (que presumiblemente ser cadenas) en objetos DateTime, que luego puede comparar usando uno de varios métodos DateTime. En los ejemplos a continuación, $dt1 y $dt2 son DateTime objetos.

$days es el delta entre las dos fechas:

my $days = $dt1->delta_days($dt2)->delta_days; 

$cmp es -1, 0 o 1, dependiendo de si $dt1 es menor que, igual a, o más de $dt2.

my $cmp = DateTime->compare($dt1, $dt2); 
+11

Una de las muchas cosas agradables de DateTime es que tiene una sobrecarga completa del operador, por ej. puedes comparar dos objetos DateTime como 'if ($ dt1 <$ dt2) {...}' – Ether

27

Si las fechas son ISO-8601 (es decir, AAAA-MM-DD) y que no es necesario para validarlos, puede comparar lexicográfico (es decir, los lt y gt operadores.)

Si necesita validar las fechas, manipular las fechas o analizar formatos no estándar; use un módulo de CPAN. Lo mejor, en mi humilde opinión, son DateTime y DateCalc. Date-Simple es bastante bueno también.

Un buen lugar para comenzar en su propio viaje es leer The Many Dates of Perl y DateTime site.

Cuestiones relacionadas