Datenbank Datum (UTC) richtig ausgeben
am 21.10.2020 - 10:23 Uhr in
Hallo zusammen,
wie schon geschrieben, geht es um die Ausgabe eines Datums (Termin mit Uhrzeit) auf der Webseite.
In der Datenbank werden Datumswerte in UTC gespeichert. So ein Datumswert sieht z.B. so aus:
'2020-11-30T13:07:00'. Wohl gemerkt: das ist ein String.
Das bedeutet dann: 30.11.2020 08:00 Uhr Ortszeit (Europe/Berlin).
Man muss eine Stunde hinzuzählen, weil der Termin im November liegt, wo wir hier die Winterzeit haben.
Wenn der Termin so aussähe:
'2020-08-30T13:07:00'
dann wäre das 30.08.2020 09:00 Uhr (dann ist ja Sommerzeit und ich muss 2 Stunden hinzuzählen).
Es Lösung, wie man das ausgeben kann (ich finde, das müsste auch einfacher gehen, weiss aber nicht wie):
es sei: $bl_heute der einen der beiden obige Strings, also entweder
$bl_heute = '2020-11-30T13:07:00' oder $bl_heute = '2020-08-30T13:07:00'
// in einen Timestamp konvertieren
$bl_timestamp = strtotime($bl_heute);
$bl_addiere_hinzu = 3600; // Soviele Sekunden hat eine Stunde
if(date('I',$bl_timestamp)==1) $bl_addiere_hinzu=2*$bl_addiere_hinzu; // date('I') ist 0, wenn der Termin in der Winterzeit liegt und 1, wenn er in der Sommerzeit liegt, deswegen wird bei der Sommerzeit zweimal 3600 Sekunden hinzugezählt
$bl_ausgabe = format_date($bl_timestamp+$bl_addiere_hinzu, 'custom', "d.m.Y H:i");
Weiss einer von euch eine bessere Lösung ?
Gruß
Berthold
- Anmelden oder Registrieren um Kommentare zu schreiben
Nachdem wir heute beim Drupal
am 06.01.2021 - 23:44 Uhr
Nachdem wir heute beim Drupal Stammtisch in Düsseldorf ausführlich über dieses Thema gesprochen haben, hier eine bessere Lösung, also die von mir ausgedachte.
Besonderen Dank dafür an Wilfried :-)
$bl_heute = '2020-11-30T13:07:00';
$bl_date = new DateTime($bl_heute, new DateTimeZone('UTC'));
$bl_date->setTimeZone(new DateTimeZone('Europe/Berlin'));
$bl_ausgabe = $bl_date->format('d.m.Y H:i');
Drupal Video-Tutorials