verona: Wochentag zu gegebenem Datum ermitteln?

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?

  1. 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

  2. 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.

    • Tim
    --
    Definiere "Signatur"!
    MI
  3. 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

  4. 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