2012-01-26 97 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

相关问题