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 5 Jahren)


2023-05-30 19:07:21  <?=datetime('2023-05-30 19:07:21');?>
➧ Heute um 19:07 Uhr

2023-05-30 19:07:21  <?=datetime('2023-05-30 19:07:21', true, true);?>
➧ Heute um 19:07 Uhr (vor 12 Minuten)


2023-05-29 19:19:21  <?=datetime('2023-05-29 19:19:21');?>
➧ Gestern um 19:19 Uhr

2023-05-28 19:19:21  <?=datetime('2023-05-28 19:19:21');?>
➧ Vorgestern um 19:19 Uhr

2023-05-28 19:19:21  <?=datetime('2023-05-28 19:19:21', false, true);?>
➧ Vorgestern um 19:19 Uhr (vor 2 Tagen)


2023-07-09 19:19:21  <?=datetime('2023-07-09 19:19:21');?>
➧ am 9.7.2023

2023-07-09 19:19:21  <?=datetime('2023-07-09 19:19:21', true);?>
➧ am Sonntag, den 9 Juli 2023

2023-05-30 23:19:21  <?=datetime('2023-05-30 23:19:21', true, true);?>
➧ Heute um 23:19 Uhr (in 4 Stunden)

2023-05-31 19:19:21  <?=datetime('2023-05-31 19:19:21', true, true);?>
➧ Morgen um 19:19 Uhr (in 1 Tag)

2023-06-01 19:19:21  <?=datetime('2023-06-01 19:19:21', true, true);?>
➧ Übermorgen um 19:19 Uhr (in 2 Tagen)

2023-06-04 19:19:21  <?=datetime('2023-06-04 19:19:21', true, true);?>
➧ am Sonntag, den 4 Juni 2023 (in 5 Tagen)

2023-07-09 19:19:21  <?=datetime('2023-07-09 19:19:21', true, true);?>
➧ am Sonntag, den 9 Juli 2023 (in 1 Monat)

2023-07-31 19:19:21  <?=datetime('2023-07-31 19:19:21', true, true);?>
➧ am Montag, den 31 Juli 2023 (in 2 Monaten)

2031-08-30 19:19:21  <?=datetime('2031-08-30 19:19:21', true, true);?>
➧ am Samstag, den 30 August 2031 (in 8 Jahren)


Letzte Aktualisierung: am Mittwoch, den 11 Januar 2023 (vor 5 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.

<meta> Meta-Angaben

CSS - Bild mit Impuls

PHP - Dateien im Verzeichnis vergleichen und kopieren

JavaScript - Den Wert des ausgewählten Optionsfelds auslesen

MySQL - Datum vom Timestamp anzeigen

Keine Passwörter
Möglichst auf Passwortsperren verzichten. Ein Besucher sammelt mit der Zeit einen Berg an Benutzernamen und Zugangscodes an. Mit der Zeit kommt er durcheinander und vergißt möglicherweise die Daten. Dann haben Sie einen Leser verloren. Und: Erspare es dem Besucher, gigantische Fragebögen auszufüllen.