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
pitti
23. Januar 2020 um 11:19
2
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
pitty
24. Januar 2020 um 18:28
4
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