Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Datum, Kalenderwoche eruieren

57 views
Skip to first unread message

Christian

unread,
Dec 14, 1999, 3:00:00 AM12/14/99
to
Was ist hier falsch? Ich führe ein Flatfile mit drei getrennten Werten für
Tag, Monat, Jahr einer Veranstaltung und will daraus die entsprechende
Kalenderwoche ermitteln.

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!

Christian Lackas

unread,
Dec 14, 1999, 3:00:00 AM12/14/99
to
Christian wrote:

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

--
http://www.clackas.de/

0 new messages