Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wyswietla niepoprawna date...
Forum PHP.pl > Forum > Przedszkole
JamalBIG
Witam

Nie wiem juz sam co jest nie tak ale czego bym nie wpisal w zmiennej $timestamp, wyswietla mi sie monit 'przed chwila'...

  1. <?php
  2. $timestamp = "2008-08-06 20:37:52";
  3. $time = time();
  4.  
  5. function getMinutes($minut)
  6. {
  7. // j.pol
  8. switch($minut)
  9. {
  10. case 0: return 0; break;
  11. case 1: return 1; break;
  12. case ($minut >= 2 && $minut <= 4):
  13. case ($minut >= 22 && $minut <= 24):
  14. case ($minut >= 32 && $minut <= 34):
  15. case ($minut >= 42 && $minut <= 44):
  16. case ($minut >= 52 && $minut <= 54): return "$minut minuty temu"; break;
  17. default: return "$minut minut temu"; break;
  18. }
  19. return -1;
  20. }
  21.  
  22. function getDiff($timestamp)
  23. {
  24.  
  25. $now = time();
  26.  
  27. if ($timestamp > $now) {
  28. echo 'Podana data nie może być większa od obecnej.'; // tutaj była 'zła data'
  29. return;
  30. }
  31.  
  32. $diff = $now - $timestamp;
  33.  
  34. $minut = floor($diff/60);
  35. $godzin = floor($minut/60);
  36. $dni = floor($godzin/24);
  37.  
  38. if ($minut <= 60) {
  39. $res = getMinutes($minut);
  40. switch($res) 
  41. {
  42. case 0: return "przed chwilą";
  43. case 1: return "minutę temu";
  44. default: return $res;
  45. }
  46. }
  47.  
  48. if ($godzin > 6 && $godzin < 24) {
  49. return "Dzisiaj ".date("H:i:s", $timestamp);
  50. }
  51. elseif ($godzin > 0 && $godzin < 24) {
  52. $restMinutes = ($minut-(60*$godzin));
  53. $res = getMinutes($restMinutes);
  54. if ($godzin == 1) {
  55. return "Godzinę temu ".$res;
  56. } else {
  57. return "$godzin godzin temu ".$res;
  58. }
  59. }
  60.  
  61. if ($godzin >= 24 && $godzin <= 48) {
  62. return "Wczoraj ".date("H:i:s", $timestamp);
  63. }
  64.  
  65. switch($dni)
  66. {
  67. case ($dni < 7): return "$dni dni temu, ".date("Y-m-d", $timestamp); break;
  68. case 7: return "Tydzień temu, ".date("Y-m-d", $timestamp); break;
  69. case ($dni > 7 && $dni < 14): return "Ponad tydzień temu, ".date("Y-m-d", $timestamp); break;
  70. case 14: return "Dwa tygodznie temu, ".date("Y-m-d", $timestamp); break;
  71. case ($dni > 14 && $dni < 30): return "Ponad 2 tygodnie temu, ".date("Y-m-d", $timestamp); break;
  72. case 30: case 31: return "Miesiąc temu"; break;
  73. case ($dni > 31): return date("Y-m-d", $timestamp); break;
  74. }
  75. return date("Y-m-d", $timestamp);
  76. }
  77. $wynik = getDiff($time);
  78. echo "$wynik";
  79. ?>
gox
$timestamp = "2008-08-06 20:37:52";
$time = time();
$wynik = getDiff($time); # pileczka wyskakuje stad (0)
echo "$wynik";

a ta funkcja dgetDiff() dziala mniej wiecej tak, ze zwraca roznice miedzy aktulanym czasem, a czasem wywolania, wiec w tym przypadku nanosekunda przed....
JamalBIG
Czyli co jest nie tak bo, przepraszam, ale nie rozumiem...
Gość
Moglby ktos rozwiazac ten problem bo mi tez przydal by sie ten skrypt a nie wiem jak go 'wdrozyc' w zycie...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.