2012-01-26 2 views
2

Надеюсь, что это поможет. Мне нужно рассчитать рабочие дни/часы/минуты между двумя датами. В настоящее время я использую Date :: Manip для этого, но, похоже, мне дают только дни, но не часы и минуты.Разница в дате, в рабочие дни/Часы/Мин.?

Вот отрывок из того, что у меня есть:

use Date::Manip; 
Date_Init('WorkDayBeg = 09:00', 'WorkDayEnd = 17:00'); 
.. 
my $today_date = &ParseDate("today"); 
my $parsedStart = &ParseDate("2012-01-26 13:32:49.000"); 
.. 
my $err; 
my $delta = DateCalc(ParseDate($parsedStart),$today_date,\$err,3); 
.. 
print "Raw Delta: $delta\n"; 
$delta = Delta_Format($delta,2,'%st'); 
print "Formated Delta: $delta\n"; 

Сегодня 2012-01-26. Когда я запускаю сценарий, результат:

Raw Delta: +0:0:+0:0:0:0:0 
Formated Delta: 0.00 

... В качестве другого примера, если $ parsedStart является 2011-11-22 18: 50: 24,000, я получаю:

Raw Delta: +0:0:+0:+46:0:0:0 
Formated Delta: 3974400.00 

Что я не хватает, чтобы получить часы и минуты?

Спасибо.

+0

Работает хорошо для меня (версия 6.30). Какую версию ты используешь? – Toto

+1

Работает для меня тоже с 6.30 и 5.56. Разница, которую я заметил, находится в 5.56 'today' означает« сейчас », а« вчера »означает« 24 часа назад ». В 6.30 «сегодня» означает «полночь в эту дату», а «вчера» означает «полночь на предыдущую дату». Возможно, это путает вещи для вас. – Schwern

+0

Я использую 6.25 (компания с регулируемой версией). Когда вы говорите, что это работает для вас, вы имеете в виду, что вы возвращаете часы и минуты, а не только такие дни, как я? – Namuna

ответ

0

Как упоминалось в комментариях, это разница в реализации между 5.x и 6.x Date :: Manip, где todayyesterday) имеют разные значения между версиями.

Чтобы получить желаемое поведение под 6.x, используйте now.

Смежные вопросы