Deutsche Datumsanzeige, 2x switch?!

wieseline

Mitglied
Hallo allerseits,
habe folgendes php Problem:

Als Ausgabe hätte ich gerne z.B. Dienstag, 24. März 2004. Um dieses erhalten, muss ich zweimal mit "switch" vom Englischen aufs Deutsche "umschalten". Leider kommt mit folgendem Programm nur der Dienstag richtig, aber der März ist immer noch der Mar. Die Uhrzeit ist erst einmal unwichtig.
Wie kann man das umschreiben?
Wäre sehr dankbar für eure Hilfe!

Viele Grüße
wieseline


<?php
$datum=date("D, d M Y h:i");

$dayname=substr($datum,0,3);
$tag=substr($datum,4,3);
$monat=substr($datum,8,4);
$jahr=substr($datum,12,4);

switch($monat)
{
case"Jan";$monat="Januar";break;
case"Feb";$monat="Februar";break;
case"Mar";$monat="März";break;
case"Apr";$monat="April";break;
case"May";$monat="Mai";break;
case"Jun";$monat="Juni";break;
case"Jul";$monat="Juli";break;
case"Aug";$monat="August";break;
case"Sep";$monat="September";break;
case"Nov";$monat="November";break;
case"Dec";$monat="Dezember";break;
}

switch($dayname)
{
case"Mon";$dayname="Montag";break;
case"Tue";$dayname="Dienstag";break;
case"Wed";$dayname="Mittwoch";break;
case"Thu";$dayname="Donnerstag";break;
case"Fri";$dayname="Freitag";break;
case"Sat";$dayname="Samstag";break;
case"Sun";$dayname="Sonntag";break;
}


$datum_neu=$dayname.", ".$tag.". ".$monat." ".$jahr;

echo "<body bgcolor=924115>";
echo "<div align=right>";
echo "Heute ist $datum_neu";
echo "</div>";
echo "</body>";
?>
 
$datum=date("D, d M Y h:i");

$dayname=substr($datum,0,3);
$tag=substr($datum,4,3);
$monat=substr($datum,8,4);
$jahr=substr($datum,12,4);

Das würde ich anders machen und zwar

würde ich

Code:
$dayname = date("D");
$tag = date ("d");
etc..

setzen, weil du 1. den Datumsstring ja untebn eh erneut zusammen setzt und wzeitens du mit dem substring ja nicht bei jedem Tag genau den Anfang triffst, glaube ich, da jeder Monat ja unterschiedlich viele Buchstaben im Namen hat. Oder irre ich mit meiner Behauptung?
 
Ohje Ohje - da schreien meine Aeuglein um Hilfe.
Man kanns sichs auch einfach machen:

PHP:
<?php
function deutsches_datum($format, $timestamp) {
    // c für Wochentag
    // C für Monatsnamen
    $wochentage = array("Sonntag",
                        "Montag",
                        "Dienstag",
                        "Mittwoch",
                        "Donnerstag",
                        "Freitag",
                        "Samstag");
    $monate = array("Januar",
                    "Februar",
                    "März",
                    "April",
                    "Mai",
                    "Juni",
                    "Juli",
                    "August",
                    "September",
                    "Oktober",
                    "November",
                    "Dezember");
    $wochentag = $wochentage[date("w", $timestamp)];
    $monat = $monate[date("n", $timestamp)-1];
    $datum = date($format, $timestamp);
    $datum = str_replace("c", $wochentag, $datum);
    $datum = str_replace("C", $monat, $datum);
    return $datum;
}
echo deutsches_datum("c, d. C Y", time());
?>
 
Hallo allerseits,

ich war so auf dieses switch festgefahren, dass ich nach keinen anderen Möglichkeiten sah und da fand ich nichts im Archiv. Außerdem bin ich ein ziemlich blutiger Anfänger.

Zu der Antwort von stanleyB:

Ich saß wirklich eine Stunde über dem vorgeschlagenen Script, aber es gab mir immer wieder bei der 5. Zeile mit

$wochentage = array ("Sonntag", "Montag....

eine Fehlermeldung mit parse error. Ich probierte mit Auszügen von selfphp herum, und stellte fest, dass an dieser Zeile formatmäßig alles richtig ist. Es muss irgendwie an der Zeile liegen:

$wochentag = $wochentage[date("w", $timestamp)];

Denn als ich nach dieser Zeile
echo "$wochentag";
eingab, gab es immer noch parse error.

Kann das sein?

Irgendwie versteh' ich das mit dem $timestamp und $format nicht ganz.
Na, wenn alles nichts hilft, schau ich mir noch mal die Lösung vom Archiv von Ludz an. Aber heute habe ich keine Lust mehr, auch wenn sich andere Leute an diesem Tag besonders quälen (mussten).

Viele Grüße
wieseline
 
Zurück