Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pytanie: błędne daty
Forum PHP.pl > Forum > Przedszkole
dkk
Instaluję właśnie skypt php wpquiz i mam taki z nim problem, że generuje on na serwerze nieprawidłową datę, a mianowicie przyjmuje, że teraz jest December 2004, a nie jest. Nie znam się na tyle na php, żeby się z tym uporać samodzielnie.

Za daty odpowiada następujący kod (chyba, bo zmiany w tym kodzie powodują zmianę daty)
  1. <?php
  2.  
  3. function formatTime($timestamp){
  4. $time = $timestamp;
  5. $tyear = substr($time, 0, 4);
  6. $tmonth = substr($time, 4, 2);
  7. $tday = substr($time, 6, 2);
  8. $thour = substr($time, 8, 2);
  9. $tminute = substr($time, 10, 2);
  10. $tsecond = substr($time, 12, 2);
  11. $mktime = mktime($thour, $tminute, $tsecond, $tmonth, $tday, $tyear);
  12. $formatted = date("F j, Y, g:i a",$mktime); 
  13. return $formatted;
  14. }
  15.  
  16. ?>


Pytanie jest krótkie: co tutaj zmienić, żeby data była prawidłowa? Będę bardzo wdzięczny za pomoc.
nospor
Do formatoweania daty na podstawie timestamp sluzy funkcja date(). Nie wiem po co ty kombinujesz z tą kosmiczną funckją.

  1. <?php
  2.  
  3. echo date('F j, Y, g:i a', $timestamp);
  4. echo "<br> inny format<br>";
  5. echo date('Y-m-d H:i:s, $timestamp);
  6.  
  7. ?>


i uzywaj odpowiedniego bbcode. poprawiam u ciebie
dkk
Nie, to nie działa.

Musi być zmodyfikowany fragment, który podałem.Tylko nie wiem gdzie.

mad.gif
crash
Chodzi Ci o timestamp UNIXowy (ilość sekund od początku epoki UNIX) czy SQLowy (YYYYMMDDHHMMSS) ? Jeśli to pierwsze to to co podał nospor jest jak najbardziej poprawne i innego rozwiązania nie znajdziesz.
nospor
Przeanalziowale twoją funkcję. żeby dzialala prwidlowo musisz do niej zapodac datew postaci YYYYmmddHHiiss.:
  1. <?php
  2.  
  3. echo formatTime('20050902120000');//September 2, 2005, 12:00 pm
  4.  
  5. ?>

To daci poprawny efekt. Teraz pytanie w jakiej postaci masz date w bazie. Mi ta funkccja zwróciła grudzien gdy mialem taki format YYYY-mm-dd HH:ii:ss
  1. <?php
  2.  
  3. echo formatTime('2005-09-02 12:00:00');//December 9, 2004, 2:01 am
  4.  
  5. ?>


a wiec skoro w dacie mialbys powyzszy format, to lepsza jest metoda, którą ci proponowalem:
  1. <?php
  2.  
  3. echo date('F j, Y, g:i a', strtotime('2005-09-02 12:00:00'));//September 2, 2005, 12:00 pm
  4.  
  5. ?>
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.