Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> PRoblem z funkcją formatującą datę
dominick
post
Post #1





Grupa: Zarejestrowani
Postów: 88
Pomógł: 0
Dołączył: 30.05.2014

Ostrzeżenie: (0%)
-----


Witam temat już był wałkowany jednak proszę o pomoc.

mam funkcje, która:
-pobiera czas i zwraca relatywny czyli ile mineło od tego czasu. Funkcja działa ale jeżeli ktoś doda coś o 23:00 to przez 24 godziny wyświetla mu się "dzisiaj". Chciałbym aby wyświetlało się już wczoraj a po 2 dniach wyświetlała się data w formacie d-m w tym, że miesiąc po polsku a nie liczba.

Czy ktoś wie jak przerobić istniejącą już i działającą funkcje?
funkcja dla czasu relatywnego:

  1. public static function relative($time, $dateformat = 'd.m.Y, H:i')
  2. {
  3. $peroid = array('minute' => 60, 'hour' => 3600, 'day' => 86400, 'week' => 604800);
  4. $time = time()-strtotime($time);
  5.  
  6.  
  7.  
  8. if(($time/$peroid['hour']) < 24)
  9. {
  10.  
  11.  
  12. if(round($time/$peroid['hour']) >= 0 and round($time/$peroid['hour']) <= 24)
  13. return 'dzisiaj';
  14.  
  15. return 'dzisiaj';
  16. }
  17.  
  18. elseif(($time/$peroid['day']) < 7)
  19. {
  20. if(floor(($time/$peroid['day'])) == 1)
  21. return 'wczoraj';
  22.  
  23. if(floor(($time/$peroid['day'])) == 2)
  24. return 'przedwczoraj';
  25.  
  26. return floor(($time/$peroid['day'])) . ' dni temu';
  27. }
  28.  
  29. elseif(($time/$peroid['week']) < 4)
  30. {
  31. if(floor(($time/$peroid['week'])) == 1)
  32. return 'tydzień temu';
  33.  
  34. return floor(($time/$peroid['week'])) . ' tygodnie temu';
  35. }
  36. else
  37. {
  38. return date($dateformat, time()+$time);
  39. }
  40. }


sposób wyświetlania czasu
  1. <?php echo date::relative($a->annoucement_date_added, 'announcement') ?>

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
dominick
post
Post #2





Grupa: Zarejestrowani
Postów: 88
Pomógł: 0
Dołączył: 30.05.2014

Ostrzeżenie: (0%)
-----


Dzękuje za zainteresowanie.
Nie uzupełniałem całej gdyż chciałem sprawdzić czy działa i niestety nie. (Chyba, że zły czas podstawiłem)
  1. public static function relative($userDTString, $format = 'j.M.Y, H:i', $relativeTo = 'now')
  2. {
  3. $arrLocales = array('pl_PL', 'pl','Polish_Poland.28592');
  4. setlocale( LC_ALL, $arrLocales );
  5. $dateTime = new DateTime($relativeTo);
  6. $dateTime->setTime(0,0,0);
  7.  
  8. $userDT = new DateTime($userDTString);
  9. $userDT->setTime(0,0,0);
  10.  
  11. if($userDT == $dateTime)
  12. return 'dzisiaj';
  13. elseif($userDT == $dateTime->modify('- 1 day'))
  14. return 'wczoraj';
  15. elseif($userDT == $dateTime->modify('- 1 day'))
  16. return '2 dni temu';
  17.  
  18.  
  19.  
  20. $format='j M';
  21. $userDT = str_replace(array('Sep', 'OtherMonth'), array('Wrz', 'InnyMiesiac'), $format);
  22.  
  23.  
  24. $older = new DateTime($userDTString);
  25.  
  26. return $older->format($format);
  27. }


Moje logiczne myślenie jeszcze śpi - ostatnia modyfikacja - dalej nie działa

Ten post edytował dominick 16.09.2014, 12:33:56
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 28.12.2025 - 11:52