Leser: 19
1 2 3 4 5 6 7 8 9 10 11 12 13
use Date::Calc qw/Today Delta_Days Add_Delta_Days/; my $date_from = "2009.08.22"; my ($Y,$M,$D) = split(/\./,$date_from); # Startdatum JMT my ($Yn,$Mn,$Dn) = Today(); # Datum JMT Jetzt my $delta_days = Delta_Days($Y,$M,$D,$Yn,$Mn,$Dn); for my $d (0..$delta_days) { my ($year,$month,$day) = Add_Delta_Days(($Yn,$Mn,$Dn), $d); print join ".",($year,$month,$day), "\n"; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
#!/usr/bin/perl use strict; use warnings; use DateTime; my $start = '2010.12.01'; my %date; @date{qw/year month day/} = split /\./, $start; my $start_obj = DateTime->new( %date ); my $end_obj = DateTime->now; my $counter = 1; while ( $start_obj <= $end_obj ) { print "$counter: ", $start_obj->ymd('.'),"\n"; $start_obj->add( days => 1 ); $counter++; }
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
44
45
46
47
48
49
50
1: 2010.12.01
2: 2010.12.02
3: 2010.12.03
4: 2010.12.04
5: 2010.12.05
6: 2010.12.06
7: 2010.12.07
8: 2010.12.08
9: 2010.12.09
10: 2010.12.10
11: 2010.12.11
12: 2010.12.12
13: 2010.12.13
14: 2010.12.14
15: 2010.12.15
16: 2010.12.16
17: 2010.12.17
18: 2010.12.18
19: 2010.12.19
20: 2010.12.20
21: 2010.12.21
22: 2010.12.22
23: 2010.12.23
24: 2010.12.24
25: 2010.12.25
26: 2010.12.26
27: 2010.12.27
28: 2010.12.28
29: 2010.12.29
30: 2010.12.30
31: 2010.12.31
32: 2011.01.01
33: 2011.01.02
34: 2011.01.03
35: 2011.01.04
36: 2011.01.05
37: 2011.01.06
38: 2011.01.07
39: 2011.01.08
40: 2011.01.09
41: 2011.01.10
42: 2011.01.11
43: 2011.01.12
44: 2011.01.13
45: 2011.01.14
46: 2011.01.15
47: 2011.01.16
48: 2011.01.17
49: 2011.01.18
50: 2011.01.19
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++; }