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)


2022-07-05 02:03:42  <?=datetime('2022-07-05 02:03:42');?>
➧ Heute um 02:03 Uhr

2022-07-05 02:03:42  <?=datetime('2022-07-05 02:03:42', true, true);?>
➧ Heute um 02:03 Uhr (vor 12 Minuten)


2022-07-4 02:15:42  <?=datetime('2022-07-4 02:15:42');?>
➧ Gestern um 02:15 Uhr

2022-07-3 02:15:42  <?=datetime('2022-07-3 02:15:42');?>
➧ Vorgestern um 02:15 Uhr

2022-07-3 02:15:42  <?=datetime('2022-07-3 02:15:42', false, true);?>
➧ Vorgestern um 02:15 Uhr (vor 2 Tagen)


2022-08-14 02:15:42  <?=datetime('2022-08-14 02:15:42');?>
➧ am 14.8.2022

2022-08-14 02:15:42  <?=datetime('2022-08-14 02:15:42', true);?>
➧ am Sonntag, den 14 August 2022

2022-07-05 06:15:42  <?=datetime('2022-07-05 06:15:42', true, true);?>
➧ Heute um 06:15 Uhr (in 4 Stunden)

2022-07-06 02:15:42  <?=datetime('2022-07-06 02:15:42', true, true);?>
➧ Morgen um 02:15 Uhr (in 1 Tag)

2022-07-07 02:15:42  <?=datetime('2022-07-07 02:15:42', true, true);?>
➧ Übermorgen um 02:15 Uhr (in 2 Tagen)

2022-07-10 02:15:42  <?=datetime('2022-07-10 02:15:42', true, true);?>
➧ am Sonntag, den 10 Juli 2022 (in 5 Tagen)

2022-08-14 02:15:42  <?=datetime('2022-08-14 02:15:42', true, true);?>
➧ am Sonntag, den 14 August 2022 (in 1 Monat)

2022-09-05 02:15:42  <?=datetime('2022-09-05 02:15:42', true, true);?>
➧ am Montag, den 5 September 2022 (in 2 Monaten)

2030-10-05 02:15:42  <?=datetime('2030-10-05 02:15:42', true, true);?>
➧ am Samstag, den 5 Oktober 2030 (in 8 Jahren)


Letzte Aktualisierung: am Dienstag, den 10 Mai 2022 (vor 2 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)];
}
?>

Bausteine  Alle Anzeigen

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

<head> Kopfdaten

CSS - Bild mit Impuls

PHP - Datei ab einer gewissen Dateigröße automatisch mit Datum umbenennen

JavaScript - Eingabefeld bei Fehleingabe farbig markieren

MySQL - Zeichenkette ersetzen mit REPLACE