Mar Ago 30, 2005 3:19 pm
|
 |
explorer39
Perlero Frecuente

|
Registrado: 23 Ago 2005
Mensajes: 126
Ubicación: Valladolid, España
|
|
| Fallo en Date::Manip |
|
|
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... |
|
|
|

Mar Sep 27, 2005 9:03 am
|
 |
explorer39
Perlero Frecuente

|
Registrado: 23 Ago 2005
Mensajes: 126
Ubicación: Valladolid, España
|
|
| Otro fallo |
|
|
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: |
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: |
| 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: |
| } elsif ($tmp=&ParseDateDelta($D |
e insertar bajo cada una de ellas esta otra
| Código: |
| $mode = $Curr{"Mode"}; |
|
|

Lun Sep 10, 2007 4:49 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4126
Ubicación: Valladolid, España
|
|
|
|
|
Han pasado dos años y el autor de Date::Manip ha tenido a bien concederme el honor de nombrarme como contribuyente en la caza de errores de este módulo.
Hoy ha salido la versión 5.46 de Date::Manip con bastantes errores corregidos, entre ellos el que os comentaba más arriba, en este hilo, referente a los cálculos en el primer milenio.
En cuanto al resto de errores, los desestimó como no importantes. Bueno, pues habrá que tener cuidado con ellos.
Este hilo quedará como testimonio por si alguien se encuentra con ese problema, más adelante. |
|
Powered by phpBB © 2001, 2005 phpBB Group
|