deutsches datum timestamp

hups1803

Erfahrenes Mitglied
hallo,

ich habe folgende funktion:

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;
}

$datestamp ist timestamp
PHP:
deutsches_datum("w, d. C Y - H:i",  $datestamp);

das ergebnis ist aber leider nicht richtig

rauskommt 2, 13. September 2011 - 23:20
für w gibt er 2, aus

eigentlich möchte ich das er den wochentag ausgibt

der timestamp sieht so aus 1315948851

wo ist mein fehler ****
 
Ich weiß nicht genau, wie deine Funktion funktionieren soll.
Momentan schaut es so aus, als ob du selbst ernannten Platzhalter ("c" und "C") vergibst und diese dann durch Wochentag und Monatsnamen ersetzen möchtest.
Zwei Probleme hast du allerdings:
  • Beim Aufruf der Funktion schreibst du "w". Nach der Logik deiner Funktion müsste es "c" sein:
PHP:
deutsches_datum("c, d. C Y - H:i",  $datestamp);
  • Dies wird allerdings auch nicht klappen, da "c" (klein c) auch eine spezielle Bedeutung bei der Nutzung von [phpf]date[/phpf] hat! Deswegen wird "c" bereits beim Aufruf von [phpf]date[/phpf] ersetzt, dadurch kann der Wochentag nicht mehr eingefügt werden (kein "c" wird mehr gefunden).
Deine Platzhalter zuerst zu ersetzen, und dann erst [phpf]date[/phpf] aufzurufen, ist leider keine Lösung, da allein die Namen der Wochentage und Monate einige Sonderzeichen von [phpf]date[/phpf] selbst enthalten.
Die Lösung wäre nun, einen anderen Platzhalter für "c" (klein c) zu nutzen, beispielsweise "ü" und "ä" (nicht die besten Beispiele, aber vom Prinzip sollte es klar werden).

Funktionierender Code: https://eval.in/84416
 
Hallo,
man könnte auch die Funktion strftime() anwenden:
PHP:
$timestamp = 1315948851;

date_default_timezone_set('CET');
setlocale(LC_TIME, 'de_DE');
echo strftime("%A, %e. %B %Y - %R",$timestamp);
Ausgabe:
Code:
Dienstag, 13. September 2011 - 23:20
 
Zurück