2009-08-18 2 views
0

Ich habe dies an der Spitze meiner persönlichen Konfigurationsdatei (sowie Feiertage, die eingehalten werden, so dass ich weiß, dass die Datei gelesen wird ...):Warum funktionieren WorkDayBeg und WorkDayEnd nicht in Date :: Manip?

WorkDayBeg = 08:00 
WorkDayEnd = 17:00 

... und doch, wenn Ich mache ein Delta von 8:00 bis 17:00 im Business-Modus, es heißt 8 Stunden statt 9 Uhr. Es ist ein Arbeitstag von 09:00 bis 17:00 Uhr.

Irgendeine Idee warum?

+2

Geben Sie den Code ein, der den Fehler verursacht. –

+2

Vielleicht gibt es Ihnen eine Stunde zum Mittagessen? ;-) – RET

Antwort

4

ich nicht beachten, dass das Verhalten:

#!/usr/bin/perl 

use strict; 
use warnings; 

use Date::Manip; 

Date_Init('WorkDayBeg = 08:00', 'WorkDayEnd = 17:00'); 

print 'Not in business mode: ', 
    DateCalc(ParseDate('8:00'), ParseDate('17:00')), "\n", 
    'In business mode: ', 
    DateCalc(ParseDate('8:00'), ParseDate('17:00'), undef, 2), "\n"; 
 
C:\Temp> bun 
Not in business mode: +0:0:0:0:9:0:0 
In business mode: +0:0:0:1:0:0:0 

Wie erwartet, die Differenz beträgt neun Stunden, wenn nicht im Business-Modus und ein Arbeitstag, wenn im Business-Modus.

+0

Du hast absolut recht. Ich möchte nicht einmal zugeben, was mich verwirrt hat, aber lassen Sie uns genügen, um zu sagen, dass mein folgender Code, der die Werktage/Stunden in reine Stunden umwandelt, dort war, wo das Problem lag. Danke für die Kopfüberprüfung. – Marcus

Verwandte Themen