Christian Bliß: Perl mit Date::Calc

Hallo,

folgender Quelltext funktioniert leider nicht richtig:

$sql_stamp_min ist der kleinste Timestamp, der aus der Datenbank ausgelesen wurde.
$timestamp ist der aktuelle Stamp

----------------------------------------------------------------
my ($Sekunden, $Minuten, $Stunden, $Monatstag, $Monat, $Jahr, $Wochentag, $Jahrestag, $Sommerzeit) = localtime($sql_stamp_min);

Anfang ist der 1. Tag des Monats um 0:00:00 Uhr

my @anfang_liste = (0,0,0,1,$Monat,$Jahr);
$anfang_zeitraum = timelocal(@anfang_liste);

while ($anfang_zeitraum < $timestamp) {
  my ($Sekunden, $Minuten, $Stunden, $Monatstag, $Monat, $Jahr, $Wochentag, $Jahrestag, $Sommerzeit) = localtime($anfang_zeitraum);
    $Monat+=1;
    $Monat = $Monat < 10 ? $Monat = "0".$Monat : $Monat;
    $Jahr+=1900;

print qq|<OPTION value="$anfang_zeitraum">$Monat $Jahr</OPTION>|;

my $anz_tage = Days_in_Month($Jahr,$Monat);  # Anzahl der Tage im aktuellen Monat

my ($Jahr_anfang_neu,$Monat_anfang_neu,$Tag_anfang_neu) = Add_Delta_Days($Jahr,$Monat,1,$anz_tage);

my @anfang_neu_liste = (0,0,0,$Tag_anfang_neu,$Monat_anfang_neu,$Jahr_anfang_neu);  $anfang_zeitraum = timelocal(@anfang_neu_liste);
}
----------------------------------------------------------------

Es werden komischerweise nur die geraden Monate (10. 12. 2. 4. 6. 8. ...) ausgegeben, woran kann das liegen?

MfG
Christian Bliß

  1. Hallo,

    hat sich erledigt, konnte das Problem selbst lösen :D

    -> es gab einen Fehler bei der Umrechnung von Datum auf Timestamp, ich hatte vergessen das Datum "vorzubereiten" (Jahr statt 2004 ist 104 und Monat -1)!