Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 

Fallo en Date::Manip

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Módulos
Mensaje Mar Ago 30, 2005 3:19 pm
explorer39
Perlero Frecuente
Perlero Frecuente
Registrado: 23 Ago 2005
Mensajes: 126
Ubicación: Valladolid, España
Fallo en Date::Manip Responder citando

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...
Mensaje Mar Sep 27, 2005 9:03 am
explorer39
Perlero Frecuente
Perlero Frecuente
Registrado: 23 Ago 2005
Mensajes: 126
Ubicación: Valladolid, España
Otro fallo Responder citando

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"};
Mensaje Lun Sep 10, 2007 4:49 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4126
Ubicación: Valladolid, España
Responder citando

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.
Publicar nuevo tema   Responder al tema    Foros de discusión -> Módulos Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group