• Publicidad

Fallo en Date::Manip

Aquí encontrarás todo lo que sea específicamente acerca de módulos de Perl. Ya sea que estás compartiendo tu módulo, un manual o simplemente tienes una duda acerca de alguno.

Fallo en Date::Manip

Notapor explorer39 » 2005-08-30 16:19 @721

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...
explorer39
 

Publicidad

Otro fallo

Notapor explorer39 » 2005-09-27 10:03 @460

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"};
explorer39
 


Volver a Módulos

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado