Thread Addition von Geschäftstagen
(25 answers)
Opened by tejste at 2013-07-22 10:17
Oder man erweitert sich DateTime um entsprechende Methoden:
Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 #! /usr/bin/perl use strict; use warnings; use DateTime; # Quick-Hacked: extend DateTime to set/check for business days { # default setting: 1-5 (Mo-Fr) are business days my %business_days; @business_days{1..5} = (1)x5; # Method to define business days sub DateTime::set_business_days { my $self = shift; %business_days = (); $business_days{$_} = 1 for @_; } # Method if given wday is a business day sub DateTime::is_business_day { my $self = shift; my $wday = $self->wday; return 1 if $business_days{$wday}; return 0; } } my $day1 = DateTime->now( time_zone => 'Europe/Berlin' ); $day1->set_business_days( 1 .. 5 ); my $add = 7; while ( $add ) { $day1->add( days => 1 ); my $wday = $day1->wday; $add-- if $day1->is_business_day; } print $day1->ymd, $/; Sicherlich wären noch ein paar Checks sinnvoll; Vorsicht ist auch bei den Namen für die Methoden geboten; die sollten keine bestehenden Methoden überschreiben; Sollte DateTime mal erweitert werden, kann sowas passieren. meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen! |