kaepten: timelocal macht probleme

Hallo Forumsgemeinde

folgender Code funtzt nicht:

<schnipp>
#wochentag berechnen
$tempTag = $FORM{'tagb'};
$tempMonat = $FORM{'monatb'} - 1;
$tempJahr = $FORM{'jahrb'} - 1900;
$tempTime = timelocal(0,0,0,$tempTag,$tempMonat,$tempJahr);
($tmp, $tmp, $tmp, $tmp, $tmp, $tmp, $wday) = localtime $tempTime;
<schnapp>

und zwar scheint das Ding bei der zweiuntersten Zeile mit der Funktion timelocal zu schiessen. Das Script wird nicht ausgeführt. Wenn ich diese Zeile auskommentiere, dann läuft das Script

In den Form-Vars ist z.B. 25 (tempTag) 9 (tempMonat) 2000 (tempJahr). Was ich mit obigem Coder erreichen will: Für ein Datum den Wochentag berechnen. Aber irgendetwas klemmt da leider... :-( Kann mir jemand helfen?

cheers
kaepten

  1. Hallo Forumsgemeinde

    folgender Code funtzt nicht:

    <schnipp>
    #wochentag berechnen
    $tempTag = $FORM{'tagb'};
    $tempMonat = $FORM{'monatb'} - 1;
    $tempJahr = $FORM{'jahrb'} - 1900;
    $tempTime = timelocal(0,0,0,$tempTag,$tempMonat,$tempJahr);
    ($tmp, $tmp, $tmp, $tmp, $tmp, $tmp, $wday) = localtime $tempTime;
    <schnapp>

    und zwar scheint das Ding bei der zweiuntersten Zeile mit der Funktion timelocal zu schiessen. Das Script wird nicht ausgeführt. Wenn ich diese Zeile auskommentiere, dann läuft das Script

    In den Form-Vars ist z.B. 25 (tempTag) 9 (tempMonat) 2000 (tempJahr). Was ich mit obigem Coder erreichen will: Für ein Datum den Wochentag berechnen. Aber irgendetwas klemmt da leider... :-( Kann mir jemand helfen?

    cheers
    kaepten

    es hat "nur" die Zeile use Time::Local; gefehlt...

    kaepten

  2. [...] Was ich mit obigem Coder erreichen will: Für ein Datum den Wochentag berechnen. Aber irgendetwas klemmt da leider... :-( Kann mir jemand helfen?

    Warum nimmst Du nicht :

    use Date::Manip;
    $wkno=&Date_WeekOfYear($m,$d,$y,$first);

    $m,$d,$y sollte klar sein. $first gibt an, welcher mit welchem Tag die Woche beginnt. 1 steht hier für Montag. Der Rest steht in der Modul-Doku.

    Grüße
      Klaus

    1. Hallo,

      Warum nimmst Du nicht :

      use Date::Manip;
      $wkno=&Date_WeekOfYear($m,$d,$y,$first);

      $m,$d,$y sollte klar sein. $first gibt an, welcher mit welchem Tag die Woche beginnt. 1 steht hier für Montag. Der Rest steht in der Modul-Doku.

      Grüße
        Klaus

      Dummsinn,

      $day=&Date_DayOfWeek($m,$d,$y);

      wäre die Funktion der Stunde ;-)

      Grüße
        Klaus

    2. Hi Klaus!

      Warum nimmst Du nicht :
      use Date::Manip;

      AFAIK ist Time::Local ein Standardmodul, ist also auch in der Original Source Distribution drin. Bei Date::Manip ist dagegen nicht immer sicher, ob es auf dem Rechner meiner Wahl installiert ist.

      So long

  3. Hi!

    und zwar scheint das Ding bei der zweiuntersten Zeile mit der Funktion timelocal zu schiessen. Das Script wird nicht ausgeführt. Wenn ich diese Zeile auskommentiere, dann läuft das Script

    Hast Du am Anfang
      use Time::Local;
    eingebunden?

    ($tmp, $tmp, $tmp, $tmp, $tmp, $tmp, $wday) = localtime $tempTime;

    Fuer Listenelemente eines Rueckgabewertes, die Du nicht brauchst, kannst Du einfach 'undef' schreiben (statt '$tmp'). Aber da Du nur einen der ganzen Werte brauchst, ist in diesem Fall einfacher:
    $wday = (localtime $tempTime)[6];

    So long

    1. hi!

      ($tmp, $tmp, $tmp, $tmp, $tmp, $tmp, $wday) = localtime $tempTime;
      Fuer Listenelemente eines Rueckgabewertes, die Du nicht brauchst,
      kannst Du einfach 'undef' schreiben (statt '$tmp'). Aber da Du nur
      einen der ganzen Werte brauchst, ist in diesem Fall einfacher:
      $wday = (localtime $tempTime)[6];

      Nur als Ergänzung: wenn man mehrere Werte braucht, kann man natürlich
      auch noch Slices verwenden:
        ($day, $mon, $year) = (localtime)[3,4,5];

      Dadurch erreicht man zwar das gleiche wie mit "undef"s, aber so ist
      es IMHO sauberer.

      bye, Frank!