Wochentag zu gegebenem Datum ermitteln?
verona
- php
Hallo liebes Forum,
ich habe folgende Funktion, um aus einem mySQL-Datum einen String zu erzeugen.
function mysql2date($datum)
{
if ($datum == 0000-00-00)
{
return;
}
else
{
list($jahr, $monat, $tag) = explode("-", $datum);
return sprintf("%02d.%02d.%04d", $tag, $monat, $jahr);
}
}
Das Ergebnis ist dann z.B. 08.02.2003.
Jetzt brauche ich stellenweise dazu auch den richtigen Wochentag. Aber irgendwie bekomme ich das nicht richtig hin. Suchmaschinen bringen nur Ergebnisse zum formatieren des aktuellen Datums, wie z.B. date("l"), date("D) oder auch $date[weekday]. Wer weiß Rat?
Hallo Verona
function mysql2date($datum)
{
if ($datum == 0000-00-00)
{
return;
}
else
{
list($jahr, $monat, $tag) = explode("-", $datum);
return sprintf("%02d.%02d.%04d", $tag, $monat, $jahr);
}
}Das Ergebnis ist dann z.B. 08.02.2003.
Bestimme aus dem Datum den aktuellen Zeitstempel mit mktime()
und wende darauf die Funktion getdate() an. getdate() gibt ein assoziatives Array zurück, welches unteranderem den Wochentag enthält.
Deine Funktion könnte dann so aussehen:
z.B.
<?php
function formatausgabe($datumarray)
{
$woche = array('So','Mo','Di','Mi','Do','Fr','Sa');
return $woche[$datumarray["wday"]].", ".sprintf("%02d.%02d.%d",$datumarray["mday"],$datumarray["mon"],$datumarray["year"]);
}
function mysql2date($datum)
{
if ($datum == 0000-00-00)
{
return;
}
else
{
list($jahr, $monat, $tag) = explode("-", $datum);
$datum=mktime(0,0,0,$monat,$tag,$jahr);
return formatausgabe(getdate($datum)) ;
}
}
echo mysql2date("2003-02-27");
?>
Viele Grüße
Antje
Hallo Verona,
Jetzt brauche ich stellenweise dazu auch den richtigen Wochentag.
Vielleicht hilft dieser Link:
http://www.tripod.lycos.de/webmaster/references/php/calendars.phtml#jddayofweek
Wochentagsberechnung ist recht komplex, deswegen auch die ebendort
geschilderte Umständlichkeit.
Hi!
Das Ergebnis ist dann z.B. 08.02.2003.
Jetzt brauche ich stellenweise dazu auch den richtigen Wochentag. Aber irgendwie bekomme ich das nicht richtig hin. Suchmaschinen bringen nur Ergebnisse zum formatieren des aktuellen Datums, wie z.B. date("l"), date("D) oder auch $date[weekday]. Wer weiß Rat?
date muß sich niucht auf s aktuelle Dateum beziehen, siehe http://www.php3.de/manual/de/function.date.php:
string date ( string Format [, int Timestamp])
Das aktuellöe Dateum ist nur die Standard-Einstellung, man kann auch einen anderen Timestamp(time()...) verwenden.
Und Wenn Du in MySQL eine Datumsspalte hast, also datetime, date oder timestamp, dann kannst Du das Datum direkt als Unix-Timestamp abfragen, siehe:
http://de.mysql.com/documentation/mysql/bychapter/manual.de_Reference.html#IDX1273
Also sowas:
$wochentage = array ("mo","di","mi","do","fr","sa","so");
$sql="SELECT UNIX_TIMESTAMP(datumsspalte) as timestamp FROM tabelle WHERE...";
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);
echo $wochentage[date("w", $row["timestamp"])].", ".date("d.m.Y", $row["timestamp"]);
So in etwa, so mache ich es halt, geht aber wie Du siehst auch anders.
Grüße
Andreas
Hallo,
ich wäre ja dafür, auf einen, wie von meinen Vorpostern beschieben, mit mktime() erzeugten Timestamp die Funktion
strftime (http://www.php.net/manual/de/function.strftime.php) anzuwenden.
Und bitte, bitte, liebe Forumsteilnehmer, sagt mir doch, wenn etwas gegen die Verwendung von strftime() spricht -
ich finde es nämlich merkwürdig, daß niemand außer mir dies vorschlägt.
Schönen Gruß aus Bilk
Rainer