1. dreiteilige Datumskomponenten zusammenführen
2. in epoch seconds konvertieren
3. kalenderwoche via $yday ermitteln
4. ausgabe
Leider bekomme ich dabei zwischen Eingabedatum und Ausgabedatum sowie
Kalenderwoche verschiedene Werte (IN: 29.01.1999, OUT: 1.2.99, KW: 9)
Wäre äusserst froh um einige Tipps.
Christian Bäumle
---------------------------------------------------
#!/usr/local/bin/perl
print "Content-type: text/html\n\n";
use Time::Local;
# einzelne werte aus einem flatfile
$jahr = "1999"; # später $fields[index_of_jahr]
$monat = "01"; # später $fields[index_of_monat]
$tag = "29"; # später $fields[index_of_tag]
# in epoch seconds konvertieren
$date = "$jahr-$monat-$tag";
($yyyy, $mm, $dd) = $date =~/(\d+)-(\d+)-(\d+)/;
$epoch_seconds = timegm(0, 0, 0, $dd, $mm, $yyyy);
# eruierung der kalenderwoche aus epoch seconds
($seconds, $minutes, $hours, $mday, $month, $year, $wday, $yday,
$isdst) = gmtime($epoch_seconds);
$kwoche = int($yday / 7) + 1;
# ausgabe des eingabedatums, des ausgabedatums, der kalenderwoche
$eingabe_datum = "Vorher: $tag.$monat.$jahr \n";
$ausgabe_datum = "Nachher: $mday.$month.$year \n";
$kal_woche = "Kalenderwoche: $kwoche \n";
print " $eingabe_datum $ausgabe_datum $kal_woche \n";
---------------------------------------------------
--
Christian
pizzad...@netscape.net / pls. no spam!
Hallo Christian,
> $epoch_seconds = timegm(0, 0, 0, $dd, $mm, $yyyy);
Monate fangen in Perl bei 0 (fuer Januar) an.
s. perldoc -f localtime.
> # eruierung der kalenderwoche aus epoch seconds
> ($seconds, $minutes, $hours, $mday, $month, $year, $wday, $yday,
> $isdst) = gmtime($epoch_seconds);
> $kwoche = int($yday / 7) + 1;
So werden die Kalenderwochen aber nicht berechnet. Du solltest
lieber die entsprechenden Funktionen aus Date::Calc verwenden:
Week_Number
$week = Week_Number($year,$month,$day);
Gruss
Christian