timelocal macht probleme
kaepten
- perl
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
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
[...] 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
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
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
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
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!