Thread Datumstermine ermitteln (18 answers)
Opened by la_dy82 at 2011-01-19 15:13

topeg
 2011-01-19 15:55
#144854 #144854
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
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++;
}

View full thread Datumstermine ermitteln