PHP: funkcja do wyświetlania czasu

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.

Leave a Comment

2 + one =