2012-01-26 139 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 2012-01-27 09:26:57

+1

同樣適用於我6.30和5.56。我注意到的區別是5.56'今天'意味着「現在」,而'昨天'意味着「24小時前」。在6.30「今天」中表示「此日期的午夜」,「昨天」表示「前一天的午夜」。這可能會讓你感到困惑。 – Schwern 2012-01-27 11:50:34

+0

我使用6.25(公司監管版)。當你們的人說它對你有用時,你的意思是說你得到的是返回的小時數和分鐘數,而不僅僅是我得到的日子? – Namuna 2012-01-27 16:39:04

回答

0

正如評論中所述,這是Date :: Manip的5.x和6.x之間的實現差異,其中today(和yesterday)在版本之間具有不同的含義。

要在6.x下獲得所需的行爲,請使用now

相關問題