Date::Manip es un poco pejiguero con el tema de las fechas. En concreto, todo el tema de los deltas (diferencia entre dos fechas) lo trata de forma distinta si en ese delta existe un componente de mes, que, curiosamente, es lo que te pasa a ti.
Leyendo la documentación de Date::Manip (sí, a veces hay que leerla
) en la parte de DateCalc, se comentan los distintos usos del parámetro $mode.
Si $mode=0, el cálculo se hace en días, con lo que te sale para tus fechas 35 días.
Si $mode=1, se hace un cálculo aprox. de años y meses, saliendo 1 mes y 4 días (de diciembre a enero y del día 5 al 9).
Si $mode=2, es cálculo 'bussines' (con fiestas y fines de semana): un mes y un día (un mes desde el 6 de diciembre al 6 de enero más un día para saltar el lúnes 8 de enero).
Si $mode=3, el cálculo es 'bussines' exacto: 12 días.
Using perl Syntax Highlighting
#!/usr/bin/perl -l
use Date
::Manip;
Date_Init
(
"Language=Spanish",
"DateFormat=non-US",
"EraseHolidays=1",
"PersonalCnf=fiestas.txt"
);
# print $Date::Manip::VERSION;
$diferencia = DateCalc
("05/12/2006", "09/01/2007",3
);
print $diferencia;
$dias = Delta_Format
($diferencia,1,"Hay %Mv meses y %dt dias de diferencia");
print "$dias"; # Hay 0 meses y 12.0 dias de diferenciaColoreado en 0.002 segundos, usando
GeSHi 1.0.8.4