Dzisiaj chciałbym Wam pokazać funkcję dzięki, której będziecie mogli wyświetlać czas przy wysyłaniu newsów, komentarzy, postów w formie 17 minut temu. Jest to przydatne przy serwisach społecznościowych, gdzie często pojawiają się jakieś treści. Funkcja przydatna i o wiele więcej mówiąca Waszym użytkownikom niż zwykła data 15 lutego 2010 r. godz. 00:24.Naszą funkcję umieszczamy w pliku, gdzie trzymamy inne funkcje, np. function.php bądź też możemy umieścić ją w osobnym skrypcie o nazwie time_stamp.php.
1 2 3 4 5 6 7 8 9 10 11 12 | <?php function time_stamp($session_time) { $time_difference = time() - $session_time ; $seconds = $time_difference ; $minutes = round($time_difference / 60 ); $hours = round($time_difference / 3600 ); $days = round($time_difference / 86400 ); $weeks = round($time_difference / 604800 ); $months = round($time_difference / 2419200 ); $years = round($time_difference / 29030400 ); |
Funkcja przyjmuje jeden argument jakim jest czas zapisany jako liczba sekund, która upłynęła od Uniksowej epoki, czyli od 1 stycznia 1970 00:00:00. Następnie liczymy różnicę między aktualną datą, a datą podawaną jako argument i otrzymaną wartość stanowiącą liczbę sekund umieszczamy w zmiennej $time_difference.
Następnie obliczamy liczbę minut, godzin, dni, tygodni, miesięcy i lat jakie upłynęły zapisując otrzymane zaokrąglone do jedności wartości do odpowiednich zmiennych. Teraz czas na zadeklarowanie odpowiednich napisów wyświetlanych zamiast standardowej daty.
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 | if($seconds <= 60) { echo $seconds." sekund temu"; } elseif($minutes <=60) { if($minutes == 1) { echo "minutę temu"; } elseif($minutes > 1 && substr($minutes, -1) <= 4 && substr($minutes, -1) >= 2) { echo $minutes." minuty temu"; } else { echo $minutes." minut temu"; } } elseif($hours <=24) { if($hours == 1) { echo "godzinę temu"; } elseif($hours > 1 && ($hours <= 4 || $hours >= 22)) { echo $hours." godziny temu"; } else { echo $hours." godzin"; } } elseif($days <= 7) { if($days == 1) { echo "dzień temu"; } else { echo $days." dni temu"; } } elseif($weeks <= 4) { if($weeks == 1) { echo "tydzień temu"; } elseif($weeks > 1 && substr($weeks, -1) <= 4 && substr($weeks, -1) >= 2) { echo $weeks." tygodnie temu"; } else { echo $weeks." tygodni temu"; } } elseif($months <= 12) { if($months == 1) { echo "miesiąc temu"; } elseif($months > 1 && $months <= 4) { echo $months." miesiące temu"; } else { echo $months." miesięcy temu"; } } else { if($years == 1) { echo "rok temu"; } elseif($years > 1 && $years <= 4) { echo $years." lata temu"; } else { echo $years." lat temu"; } } } ?> |
Tak wygląda cała funkcja. W jaki sposób ją wywołać?
1 2 3 4 5 6 7 | <?php include("time_stamp.php"); $session_time = time() - (7 * 24 * 60 *60); time_stamp($session_time); ?> |
Przykład działania funkcji możecie zobaczyć tutaj.
Popularity: unranked
