Wie kann ich die Sprache für den Datum-/Zeitwert auf Deutsch umstellen?

Hallo,
von einem Datum-/Zeitwert im Unix-Format erstelle ich ein DateTime-Objekt. Wenn ich mit format - welches für den Wochentag das Formatzeichen D enthält - das Datum anzeige, dann erscheint der Wochentag in Englisch (The, Wed, …).


$dateTime = new DateTime();
$dateTime->setTimezone(new DateTimeZone('Europe/Berlin'));
$dateTime->setTimestamp(1579762006);
echo $dateTime->format('D d.m.Y   H:i');

Wie kann ich die Sprache für den Datum-/Zeitwert auf Deutsch umstellen?

Alexander

Das Problem kenne ich. Ich weiß nicht ob es eine bessere methode gibt, aber ich behelfe mir mit eine Übersetzungstabelle:


# Wochentage auf Deutsch
$day = [
    'Sonntag',
    'Montag',
    'Dienstag',
    'Mittwoch',
    'Donnerstag',
    'Freitag',
    'Samstag',
];
# Übersetzungstabelle
$trans = [
    'Monday'    => 'Montag',
    'Tuesday'   => 'Dienstag',
    'Wednesday' => 'Mittwoch',
    'Thursday'  => 'Donnerstag',
    'Friday'    => 'Freitag',
    'Saturday'  => 'Samstag',
    'Sunday'    => 'Sonntag',
    'Mon'       => 'Mo',
    'Tue'       => 'Di',
    'Wed'       => 'Mi',
    'Thu'       => 'Do',
    'Fri'       => 'Fr',
    'Sat'       => 'Sa',
    'Sun'       => 'So',
    'January'   => 'Januar',
    'February'  => 'Februar',
    'March'     => 'März',
    'May'       => 'Mai',
    'June'      => 'Juni',
    'July'      => 'Juli',
    'October'   => 'Oktober',
    'December'  => 'Dezember',
];

//Beispiel DateTime
$mo = $dt->format('F');
$mo = strtr($mo, $trans);

// oder 
substr($day[date("w", strtotime($end_date))],0,2).


Hoffe das verständlich mein Vorgehen
Heiko

Hallo Heiko,
Danke für deine Mühe. Es muss aber irgendwie zentral für die Basis-Funktionen (Datum/Zeit gehört dazu) möglich sein. Leider finde ich nichts.

Alexander

Hallo Alexander,
habe ich auch vergeblich nach gesucht und so gelöst:

// Wochentag in deutsch ausgeben
$Tag = Date("w");
$Tag1 = array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
SetValueString(36047, $Tag1[$Tag]);

Die Lösung von Heiko (OT: pitti - Verwechslung nicht ausgeschlossen) ist universaler.

Gruß, Peter

Hallo Heiko und Peter,
Danke für eure Hilfe. Inzwischen habe ich mehrfach in PHP-Foren gelesen, dass es nur mit einem eigenen Array funktioniert. So wie von euch vorgeschlagen.

Alexander

Dafür gibt es eine fertige PHP Funktion.
PHP: strftime - Manual


$sTStamp = "1342333231"; echo strftime("%A, den %d %B %Y %H:%M", $sTStamp); 

Michael

Hallo Michael,
genau die Funktion habe ich gesucht. Danke.

Alexander