PHP - Datum und Uhrzeit formatiert ausgeben

Möchte man das Datum mit mehr Informationen anzeigen (Vorgestern, Gestern, Heute, vor 3 Jahren, vor 12 Minuten, in 8 Minuten, in 5 Tagen, in 2 Monaten, ... etc.) dann ist diese Funktion hilfreich.

Die Eingabe erfolgt im Format: YYYY-MM-DD HH:II:SS (ISO 8601)

Folgende Zeitangaben werden ausgeben, hier einige Beispiele:

2018-01-04 22:30:07  <?=datetime('2018-01-04 22:30:07');?>
➧ am 4.1.2018

2018-01-04 22:30:07  <?=datetime('2018-01-04 22:30:07', true);?>
➧ am Donnerstag, den 4 Januar 2018

2018-01-04 22:30:07  <?=datetime('2018-01-04 22:30:07', true, true);?>
➧ am Donnerstag, den 4 Januar 2018 (vor 6 Jahren)


2023-11-29 09:05:16  <?=datetime('2023-11-29 09:05:16');?>
➧ Heute um 09:05 Uhr

2023-11-29 09:05:16  <?=datetime('2023-11-29 09:05:16', true, true);?>
➧ Heute um 09:05 Uhr (vor 12 Minuten)


2023-11-28 09:17:16  <?=datetime('2023-11-28 09:17:16');?>
➧ Gestern um 09:17 Uhr

2023-11-27 09:17:16  <?=datetime('2023-11-27 09:17:16');?>
➧ Vorgestern um 09:17 Uhr

2023-11-27 09:17:16  <?=datetime('2023-11-27 09:17:16', false, true);?>
➧ Vorgestern um 09:17 Uhr (vor 2 Tagen)


2024-01-08 09:17:16  <?=datetime('2024-01-08 09:17:16');?>
➧ am 8.1.2024

2024-01-08 09:17:16  <?=datetime('2024-01-08 09:17:16', true);?>
➧ am Montag, den 8 Januar 2024

2023-11-29 13:17:16  <?=datetime('2023-11-29 13:17:16', true, true);?>
➧ Heute um 13:17 Uhr (in 4 Stunden)

2023-11-30 09:17:16  <?=datetime('2023-11-30 09:17:16', true, true);?>
➧ Morgen um 09:17 Uhr (in 1 Tag)

2023-12-01 09:17:16  <?=datetime('2023-12-01 09:17:16', true, true);?>
➧ Übermorgen um 09:17 Uhr (in 2 Tagen)

2023-12-04 09:17:16  <?=datetime('2023-12-04 09:17:16', true, true);?>
➧ am Montag, den 4 Dezember 2023 (in 5 Tagen)

2024-01-08 09:17:16  <?=datetime('2024-01-08 09:17:16', true, true);?>
➧ am Montag, den 8 Januar 2024 (in 1 Monat)

2024-01-30 09:17:16  <?=datetime('2024-01-30 09:17:16', true, true);?>
➧ am Dienstag, den 30 Januar 2024 (in 2 Monaten)

2032-02-29 09:17:16  <?=datetime('2032-02-29 09:17:16', true, true);?>
➧ am Sonntag, den 29 Februar 2032 (in 8 Jahren)


Letzte Aktualisierung: am Mittwoch, den 11 Januar 2023 (vor 11 Monaten)

Letzte Aktualisierung: 
<?php
$aktuell 
date("Y-m-d H:i:s"filemtime(basename($_SERVER["SCRIPT_NAME"])));
echo 
datetime($aktuelltruetrue);
?>

Die Funktion

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
<?php
// Datum und Uhrzeit formatiert ausgeben

// $datetime = YYYY-MM-DD HH:II:SS
function datetime($datetime,
                           
$wochentagMonat false,
                           
$niceDate false) {

 
sscanf($datetime"%4s-%2s-%2s %2s:%2s:%2s"$jahr$monat$tag$stunde$minute$sekunde);

 if (
$niceDate) {
  
$niceDate ' (' niceDate($tag$monat$jahr$stunde$minute$sekunde) . ')';
 }
 else {
  
$niceDate '';
 }

 
$datum mktime(000date($monat), date($tag), date($jahr));

 
// Heute
 
if ($datum == mktime(000date("m"), date("d"), date("Y"))) {
  return 
'Heute um ' $stunde ':' $minute ' Uhr' $niceDate;
 }
 
// Gestern
 
else if ($datum == mktime(000date("m"), date("d") - 1date("Y"))) {
  return 
'Gestern um ' $stunde ':' $minute ' Uhr' $niceDate;
 }
 
// Vorgestern
 
else if ($datum == mktime(000date("m"), date("d") - 2date("Y"))) {
  return 
'Vorgestern um ' $stunde ':' $minute ' Uhr' $niceDate;
 }
 
// Morgen
 
else if ($datum == mktime(000date("m"), date("d") + 1date("Y"))) {
  return 
'Morgen um ' $stunde ':' $minute ' Uhr' $niceDate;
 }
 
// Übermorgen
 
else if ($datum == mktime(000date("m"), date("d") + 2date("Y"))) {
  return 
'Übermorgen um ' $stunde ':' $minute ' Uhr' $niceDate;
 }
 else {
  if (
$wochentagMonat == false) {
   return 
'am ' floor($tag) . '.' floor($monat) . '.' $jahr $niceDate;
  }
  else {
   return 
'am ' wochentag($tag$monat$jahr) . ', den ' floor($tag) . ' ' monat($monat) . ' ' $jahr $niceDate;
  }
 }
}


function 
niceDate($tag$monat$jahr$stunde$minute$sekunde) {

 
$timestamp mktime($stunde$minute$sekunde$monat$tag$jahr);
 
$difference time() - $timestamp;
 
$periods = ["Sekunde",
                     
"Minute",
                     
"Stunde",
                     
"Tage",
                     
"Woche",
                     
"Monate",
                     
"Jahre",
                     
"Jahrzehnte"
            ];
 
$lengths = ["60""60""24""7""4.35""12""10"];

 if (
$difference > 0) {
  
// Vergangenheit
  
$ending "vor";
 }
 else {
  
// Zukunft
  
$difference = -$difference;
  
$ending "in";
 }

 for (
$j 0$difference >$lengths[$j]; $j++) {
  
$difference /= $lengths[$j];
  
$difference round($difference);
 }

 if (
$difference != 1) {
  
$periods[$j] .= "n";
 }
 else {
  if (
$periods[$j] == "Woche" ||
      
$periods[$j] == "Stunde" ||
      
$periods[$j] == "Minute" ||
      
$periods[$j] == "Sekunde") {
    
$periods[$j] = $periods[$j];
  }
  else {
   
$periods[$j] = substr($periods[$j], 0, -1);
  }
 }
 return 
$ending ' ' $difference ' ' $periods[$j];
}


// Wochentag ermitteln
function wochentag($tag$monat$jahr) {
 
$tage = ["Sonntag""Montag""Dienstag""Mittwoch""Donnerstag""Freitag""Samstag"];
 
$wt getdate(mktime(000$monat$tag$jahr));
 return 
$tage[$wt["wday"]];
}


// Monat ermitteln
function monat($monat) {
 
$monate = [=> "Januar""Februar""März""April""Mai""Juni""Juli""August""September",
  
"Oktober""November""Dezember"];
 return 
$monate[floor($monat)];
}
?>

Siehe auch: Datum und Zeitfunktionen und Berechnungen mit dem Datum

Bausteine  Alle Anzeigen

Eine zufällige Auswahl von Codeschnipseln aus den Bereichen HTML, CSS, PHP, JavaScript und MySQL.

<area> Areal (Verweis-sensitive Grafik)

CSS - Vertikale Schrift

PHP - Den Array-Inhalt in einer Tabelle aufteilen

JavaScript - Einen zufälligen hexadezimalen Farbcode generieren

MySQL - Datenbank-Abfrage über den URL-Parameter

Freiraum
Quetschen Sie nicht so viel Text, Links und Bilder auf eine Seite. Lassen Sie freien Raum. Der Besucher wird es ihnen danken, außerdem erhöht es die Übersichtlichkeit.