Skip to content

Commit 12e4553

Browse files
authored
Interval - Vor x Tagen
1 parent 534088c commit 12e4553

File tree

1 file changed

+62
-1
lines changed

1 file changed

+62
-1
lines changed

implement-approach/04_datetime.md

Lines changed: 62 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ Nachfolgende Seiten aus der PHP-Dokumentation finden in den Beispielen laufend V
8989
## [Zeitzone](#zeitzone)
9090
{: #zeitzone}
9191

92-
Für alle nachfolgenden Beispiele wurde wie folgt die verwendete <strong>Standard-Zeitzone</strong> gesetzt.
92+
Für alle nachfolgenden Beispiele wurde wie folgt die verwendete **Standard-Zeitzone** gesetzt.
9393

9494
~~~php
9595
date_default_timezone_set('Europe/Berlin');
@@ -228,6 +228,67 @@ echo $period;
228228
~~~
229229

230230

231+
### [Interval - Anwendungsbeispiel ("Vor x Tagen")](#interval-anwendung)
232+
{: #interval-anwendung}
233+
234+
Auf Basis der obigen Ansätze ist bspw. nachfolgende konkrete Anwendung **"Vor x Tagen/Monaten."** möglich.
235+
Basis und Codebeispiel entstammen diesen [PHP.de-Forumsbeitrag](https://www.php.de/forum/webentwicklung/php-einsteiger/1524146-php-vor-x-tagen).
236+
237+
~~~ php
238+
$ts = 1517580600;
239+
240+
$date = new DateTime('now');
241+
$date->setTimestamp($ts);
242+
243+
$now = new DateTime('now');
244+
$diff = $now->diff($date);
245+
246+
if ($diff->y > 0) {
247+
$unit = 'Jahr';
248+
$intervall = $diff->y;
249+
250+
} elseif ($diff->m > 0) {
251+
$unit = 'Monat';
252+
$intervall = $diff->m;
253+
254+
} elseif ($diff->d > 0) {
255+
$unit = 'Tag';
256+
$intervall = $diff->d;
257+
258+
} elseif ($diff->h > 0) {
259+
$unit = 'Stunde';
260+
$intervall = $diff->h;
261+
262+
} elseif ($diff->i > 0) {
263+
$unit = 'Minute';
264+
$intervall = $diff->i;
265+
266+
} else {
267+
$unit = 'Sekunde';
268+
$intervall = $diff->s;
269+
}
270+
271+
// ev. Pluralform erzeugen
272+
if ($intervall <> 1 ) {
273+
$unit .= 'en';
274+
$unit = str_replace('ee', 'e', $unit);
275+
}
276+
277+
// Ausgabe
278+
printf('Thema erstellt vor %s %s.', $intervall, $unit);
279+
~~~
280+
281+
Ergibt testweise bei folgenden Eingabe die als Kommentar nebenstehenden Ausgaben.
282+
283+
~~~php
284+
$ts = date('U'); // Thema erstellt vor 0 Sekunden.
285+
$ts = date('U') - 1800; // Thema erstellt vor 30 Minuten.
286+
$ts = date('U') - 3600; // Thema erstellt vor 1 Stunde.
287+
$ts = date('U') - 1036800; // Thema erstellt vor 12 Tagen.
288+
~~~
289+
290+
291+
231292
## [Perioden](#perioden)
232293
{: #perioden}
233294

0 commit comments

Comments
 (0)