Perl :: Aufgabe #8 :: Lösung #1

1 Lösung Lösung öffentlich
#8

Datumsberechnung ohne Wochenendtage und Feiertage

Anfänger - Perl von Gustl - 10.08.2012 um 19:54 Uhr
Schreiben Sie eine Subroutine welcher 2 Argumente übergeben werden.

1. Parameter: ein Datum (2012-08-12)
2. Parameter: Anzahl der Tage die zu dem Datum addiert bzw. abgezogen werden.

Die Subroutine soll dann das Datum minus oder plus der Anzahl der übergebenen Tage ohne Wochenendtage (Samstag, Sonntag) und ohne Feiertage, quasi nur die Werktage, berechnen und zurückgeben.

Beispiel:
Quellcode ausblenden Perl-Code
# 2012-08-10 - Freitag
my $new_datum = get_date_workdays("2012-08-10", 5);
print $new_datum; # 2012-08-17 

Da die Feriertage von Bundesland zu Bundeslad nicht immer gleich sind, sind diese frei wählbar.
#1
vote_ok
von progdoc (2220 Punkte) - 31.08.2012 um 15:11 Uhr
Quellcode ausblenden Perl-Code
#!/usr/bin/perl
use warnings ;
use strict ;
use DateTime ;

sub get_date_workdays {
   my $startdate = shift ;
   my $daynumber = shift ;
   my ( $year , $month , $day ) = split( /\-/ , $startdate ) ;
   my $dt = DateTime->new( year => $year ,
	                       month => $month ,
			               day => $day ) ;
   my $n = 0 ;
   while ( $n != $daynumber ) {
      $dt->add( days => 1 ) ;
      my $dow = $dt->day_of_week ;
      if ( $dow != 6 && $dow != 7 ) {#we count working days only
	 $n++ ;
      }
   }
   return $dt->ymd ;
}

my $new_datum = get_date_workdays( "2012-08-10" , 5 ) ;
print $new_datum . "\n" ;

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben
2096843

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.