Thread Datumstermine ermitteln
(18 answers)
Opened by la_dy82 at 2011-01-19 15:13 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 42 43 #!/usr/bin/perl # Module laden use strict; use warnings; # DateTime Modul laden use DateTime; # StartDatum im "Amerikanischen" Format my $start = '2010.12.01'; # Hash für das aufgeteilte Datum my %date; # Datum zerlegen # und als Hashwerte unter den Schlüsseln # "year" "month" "day" ablegen ( siehe Hashslice ) @date{qw/year month day/} = split /\./, $start; # neues DateTime Objekt # mit den Werten aus dem Hash %date erzeugen my $start_obj = DateTime->new( %date ); # neues DateTime Objekt # vom aktuellen datum erzeugen my $end_obj = DateTime->now; # einen Zähler initialisieren (dient nur zur Ausgabe) my $counter = 1; # Die Schleife ist solange aktiv, # bis der Objekt $start_obj den selben Wert hat wie $end_obj # Das funktioniert, weil Operatoren wie "<=" oder "==" "überleden" sind # und durch Funktionen im Paket ersetzt wurden # ( harter Stoff aber, # wenn es dich interessiert # schau mal in das Modul "overload" ) while ( $start_obj <= $end_obj ) { # Datum ausgeben # "ymd" erzeugt einen "Amerikanischen" DatumsString "Jahr Monat Tag" # die Methode übernimmt ein Trennzeihen (hier ".") print "$counter: ", $start_obj->ymd('.'),"\n"; # den Tag um 1 erhöhen $start_obj->add( days => 1 ); # zähler um 1 erhöhen $counter++; } |