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

주석에서 언급했듯이 이것은 today (및 yesterday) 버전간에 서로 다른 의미를 갖는 Date :: Manip의 5.x와 6.x 간의 구현 차이입니다.

6.x에서 원하는 동작을 얻으려면 now을 사용하십시오.