petz: Datum verändern

Hallo

Ich versuche Dateinamen aufgrund eines Datums zu erzeugen. Konkret möchte ich, wenn das aktuelle Datum ein Erster eines Monats ist, dass eine Datei einen Namensabhängegen Zusatz im Namen erhält. D.h. am 1.12.04 soll die Datei file.html
umbenannt werden in file1104.html. Dazu habe ich folgendes Skriptlein gebastelt:

...

my ($Sekunden, $Minuten, $Stunden, $Monatstag, $Monat, $Jahr, $Wochentag, $Jahrestag, $Sommerzeit) = localtime(time);
$Monat+=1;
$Jahrestag+=1;
$Jahr-=100;
$Monatstag1 = $Monatstag; #monatstag einstellig
$Jahr1 = $Jahr;    #jahr einstellig
$Monat = $Monat < 10 ? $Monat = "0".$Monat : $Monat;
$Jahr = $Jahr < 10 ? $Jahr = "0".$Jahr : $Jahr;
$Monatstag = $Monatstag < 10 ? $Monatstag = "0".$Monatstag : $Monatstag;
$Stunden = $Stunden < 10 ? $Stunden = "0".$Stunden : $Stunden;
$Minuten = $Minuten < 10 ? $Minuten = "0".$Minuten : $Minuten;
$Sekunden = $Sekunden < 10 ? $Sekunden = "0".$Sekunden : $Sekunden;

#Prüfen, ob bereits ein File besteht
if (-e "file.html") {
 #Am ersten des Monats, bestehende Auswertung umbenennen und Eintrag in history-File vornehmen
 if ($Monatstag == 1) {
  if ($Monat1 == 1) {
   $Vormonat = 12;
   $Jahr -= 1;
  }
  else{
   $Vormonat -= $Monat1;
   $Vormonat = $Vormonat < 10 ? $Vormonat = "0".$Vormonat : $Vormonat;
  }

rename("file.html","file".$Vormonat.$Jahr.".html");
  open(HISTORY, ">>hist");
  print(HISTORY "<br><a href="file".$Vormonat.$Jahr.".html">Statistik ".$Vormonat."/".$Jahr."</a>");
  close(HISTORY)
 }
}

Leider entspricht hier der Vormonat nicht (bezogen auf 1.12.) 11, sondern 00. Sieht wer von Euch direkt das Problem?

Danke für Eure Hinweise

Grüsse

  1. Hej,

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

    [ ... ]

    Aus dieser Deklaration geht an keiner Stelle die Initialisierung von $Monat1 oder $Vormonat hervor. Annahme sie sind nicht initialisiert und somit haben sie den Wert 0!

    #Prüfen, ob bereits ein File besteht
    if (-e "file.html") {
    #Am ersten des Monats, bestehende Auswertung umbenennen und Eintrag in history-File vornehmen
    if ($Monatstag == 1) {
      if ($Monat1 == 1) {
       $Vormonat = 12;
       $Jahr -= 1;
      }

    $Monat1 != 1

    else{
       $Vormonat -= $Monat1;

    $Vormonat = 0 - 0 =0

    $Vormonat = $Vormonat < 10 ? $Vormonat = "0".$Vormonat : $Vormonat;

    $Vormonat = 00;

    }

    [...]

    Kanns daran gelegen haben?

    Beste Grüße
    Biesterfeld

    --
    Selfcode:
    fo:| br:> n4:? ie:{ mo:} va:} de:] zu:| fl:| ss:| ls:]
  2. Leider entspricht hier der Vormonat nicht (bezogen auf 1.12.) 11, sondern 00. Sieht wer von Euch direkt das Problem?

    Danke für Eure Hinweise

    Grüsse

    Hi Petz,

    ich habe zwar keine große Ahnung von Perl(syntax)
    aber ich glaube das Problem ist allgemeiner.

    veruche doch mal(sinngemäß) folgendes einzubinden:

    $monat_aus_array = [0,Jan,Feb,...,Dez]

    meine gedanken dazu:
    -Auswertung des Arrays beginnt mit 0 ... Monat 0 gibt es nicht
    -für Monatswert den wert aus arry nehmen.

    eventuell habe ich dich aber falsch verstanden.

    Gruß
    Detlef