Página 1 de 1

Fallo en Date::Manip

NotaPublicado: 2005-08-30 16:19 @721
por explorer39
Hoy he descubierto un fallo del -monstruoso- módulo Date::Manip.

Parece que no manejaba bien las fechas del siglo primero después de Cristo.

El autor ya está avisado. Le he mandado un parche y me ha dicho que publicará enseguida la nueva versión.

Qué cosas... nadie se había dado cuenta hasta ahora, hasta que un programador Indio me mandó una carta diciendo que estaba procesando efemérides astronómicas y el módulo fallaba justo en esas fechas...

Lo que se aprende...

Otro fallo

NotaPublicado: 2005-09-27 10:03 @460
por explorer39
Ha pasado casi un mes y acabo de descubrir otro fallo de este módulo.
Parece ser que en la versión 5.44 no funciona el módo de contar los días indicado en el desplazamiento dentro del cálculo de fechas.
Quiero decir, que según la documentación, las dos líneas siguientes deberían hacer lo mismo:
Código: Seleccionar todo
perl -MDate::Manip -le 'Date_Init( "Language=Spanish", "DateFormat=non-US"); $x = DateCalc("29/09/2005", "+ 6 dias",\$err,2); print $x,"\n",$err'
2005100708:00:00

perl -MDate::Manip -le 'Date_Init( "Language=Spanish", "DateFormat=non-US"); $x = DateCalc("29/09/2005","+ 6 dias laborales",\$err); print $x,"\n",$err'
2005100500:00:00
Pues no... la segunda línea veis que falla... si al día 29 de septiembre le sumo 6 días laborales debería dar el 7 de octubre, como en la primera línea, pero falla diciendo que es el día 5 de octubre.
El fallo es independiente del idioma. Esto también fallará:
Código: Seleccionar todo
perl -MDate::Manip -le '$x = DateCalc("09/29/2005","+ 6 business days",\$err); print $x,"\n",$err'
El error está publicado como [cpan #14762] en Date::Manip y como [cpan #14763] en DateTime::Format::DateManip. El autor también está avisado.
Un solución que he encontrado es editar Date::Manip y buscar las dos líneas
Código: Seleccionar todo
} elsif ($tmp=&ParseDateDelta($D
e insertar bajo cada una de ellas esta otra
Código: Seleccionar todo
$mode = $Curr{"Mode"};