2012-01-26 14 views
2

これを理解するのに役立つことを願っています。 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年1月26日です。私は、スクリプトを実行すると、結果は次のとおりです。$ parsedStartがある場合

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

...は、別の例として、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にあります。今日は「今」を意味し、「昨日」は「24時間前」を意味します。 6.30では、「今日」は「この日の深夜」を意味し、「昨日」は「前日の深夜」を意味します。これはあなたのために混乱するかもしれません。 – Schwern

+0

私は6.25(会社規制バージョン)を使用しています。あなたの人がそれがあなたのために働くと言うとき、あなたは時間と分が返ってきて、私が得るような日数だけではないということを意味しますか? – Namuna

答えて

0

コメントに記載されているように、これはDate :: Manipの5.xと6.xの実装の違いです。today(とyesterday)はバージョン間で意味が異なります。

6.xで目的の動作を取得するには、nowを使用します。