Bereken tijden xx geleden
Ik wil graag een scriptje maken die uitrekend hoeveel tijdsverschil er tussen twee tijden zit.
Nu heb ik dit al wel voor elkaar gekregen maar ik weet niet zeker hoe ik het aan kan geven als:
Binnen 24 uur 14 minuten geleden, 6 uur geleden, 18 uur geleden
Na 24 uur binnen dezelfde maand 1 dag geleden, 6 dagen geleden, 18 dagen geleden
Ik heb namelijk een datetime in de database staan ( YYYY-m-d i:s ) en ik wil door middel van de huidige servertime berekenen hoe lang geleden de post is geplaatst. Dan alleen niet in tijd maar in text en met bepaalde factoren zoals ik heb vermeld in het lijstje hierboven.
Ik gebruik momenteel
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
$getDate = $row["postdate"];
$postdate = new DateTime($getDate);
$showDate1 = $postdate->format("m/d");
$showDate2 = $postdate->format("H:i");
$showDate = "$showDate1 $showDate2";
$postdate = new DateTime($getDate);
$showDate1 = $postdate->format("m/d");
$showDate2 = $postdate->format("H:i");
$showDate = "$showDate1 $showDate2";
Op deze manier kan ik in ieder geval laten zien welke datum en welke tijd de post is geplaatst maar ik wil dus niet zien 03/02 09:02 maar in text hoe lang het geleden is.
Ik heb dit al wel voor elkaar gekregen met diff() maar ook hiermee krijg ik bijvoorbeeld alleen voor elkaar om het aantal uur verschil te laten zien en heb ik ook geen idee hoe ik dit om zet in text ( 2 uur geleden, 2 dagen geleden enz ).
Wat dus het idee zou moeten zijn:
Postdate: 2016-02-15 15:00:00
Huidige datum 2016-02-15 17:06
Resultaat: 2 uur geleden
Postdate: 2016-02-16 15:00:00
Huidige datum 2016-02-19 17:06
Resultaat: 3 dagen geleden
Postdate: 2016-02-15 15:00:00
Huidige datum 2016-03-15 17:06
Resultaat: 1 maand geleden
Postdate: 2016-02-15 15:00:00
Huidige datum 2016-03-15 17:06
Resultaat: Langer dan een maand ga ik gewoon weer de datum gebruiken ipv hoe lang geleden
Waar ik stuk look is het hele datum gebeuren. Ik zou wel het verschil tussen de uren uit kunnen rekenen en laten zien zoals bijv "2 uur geleden" maar het probleem zit hem in het feit dat de dagen, maanden en jaren gewoon doorlopen. Dus de 2 uur geleden zou op mijn manier morgen om dezelfde tijd nog altijd 2 uur geleden zijn terwijl er wel een dag bij is gekomen.
Alvast erg bedankt!
Gewijzigd op 02/03/2016 09:12:42 door Allard Keij
Datetime::diff
Kijk eens naar Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$date1 = new DateTime("2015-03-24 11:30");
$date2 = new DateTime("2015-06-26 16:45");
$interval = $date1->diff($date2);
$years = $interval->y;
$months = $interval->m;
$days= $interval->d;
$hours = $interval->h;
$minutes = $interval->i;
$seconds = $interval->s;
?>
$date1 = new DateTime("2015-03-24 11:30");
$date2 = new DateTime("2015-06-26 16:45");
$interval = $date1->diff($date2);
$years = $interval->y;
$months = $interval->m;
$days= $interval->d;
$hours = $interval->h;
$minutes = $interval->i;
$seconds = $interval->s;
?>
Gewijzigd op 02/03/2016 09:34:22 door Randy vsf
Ik ga dalijk weer eens verder knutselen en kijken wat ik er van kan maken.
Erg bedankt!
Toevoeging op 02/03/2016 11:42:40:
Ik ben er mee aan de slag gegaan en heb het voor elkaar gekregen! Thanks!
Code (php)
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
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
<?php
$getDate = $row["postdate"];
$currentdate = date('Y-m-d H:i:s');
$postdate = new DateTime($getDate);
$serverdate = new DateTime($currentdate);
$showDate = $postdate->diff($serverdate);
$minutes = $showDate->i;
$hours = $showDate->h;
$days = $showDate->d;
$months = $showDate->m;
$years = $showDate->Y;
$longDate1 = $postdate->format("m/d");
$longDate2 = $postdate->format("H:i");
$showLongDate = "$longDate1 $longDate2";
if($minutes == 0 || $minutes == 1 && $hours == 0 && $days == 0 && $months == 0){
$textdate = "JUST NOW";
}
if($minutes >= 2 && $hours == 0 && $days == 0 && $months == 0){
$textdate = "$minutes MINUTES AGO";
}
if($hours == 1 && $days == 0 && $months == 0 && $years == 0){
$textdate = "$hours HOUR AGO";
}
if($hours >= 2 && $days == 0 && $months == 0 && $years == 0){
$textdate = "$hours HOURS AGO";
}
if($days == 1 && $months == 0 && $years == 0){
$textdate = "YESTERDAY";
}
if($days > 1 && $months == 0 && $years == 0){
$textdate = "$days DAYS AGO";
}
if($months >= 1){
$textdate = "$showLongDate";
}
?>
$getDate = $row["postdate"];
$currentdate = date('Y-m-d H:i:s');
$postdate = new DateTime($getDate);
$serverdate = new DateTime($currentdate);
$showDate = $postdate->diff($serverdate);
$minutes = $showDate->i;
$hours = $showDate->h;
$days = $showDate->d;
$months = $showDate->m;
$years = $showDate->Y;
$longDate1 = $postdate->format("m/d");
$longDate2 = $postdate->format("H:i");
$showLongDate = "$longDate1 $longDate2";
if($minutes == 0 || $minutes == 1 && $hours == 0 && $days == 0 && $months == 0){
$textdate = "JUST NOW";
}
if($minutes >= 2 && $hours == 0 && $days == 0 && $months == 0){
$textdate = "$minutes MINUTES AGO";
}
if($hours == 1 && $days == 0 && $months == 0 && $years == 0){
$textdate = "$hours HOUR AGO";
}
if($hours >= 2 && $days == 0 && $months == 0 && $years == 0){
$textdate = "$hours HOURS AGO";
}
if($days == 1 && $months == 0 && $years == 0){
$textdate = "YESTERDAY";
}
if($days > 1 && $months == 0 && $years == 0){
$textdate = "$days DAYS AGO";
}
if($months >= 1){
$textdate = "$showLongDate";
}
?>
Gewijzigd op 02/03/2016 11:43:38 door Allard Keij