Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Microtime + date
Forum PHP.pl > Forum > Przedszkole
L0k0
Witam!

Sprawa ma się tak:

Do bazy wysyłam microtime - dodaje się komórka z czasem w milisekundach - fajnie. Teraz pytanie:

Kod
Jak to wyciągnąć, aby z tego pozyskać datę/godzinę?


Ja robię tak:

  1. echo $odp[2]; // wyświetla mi 0.02100800 1301466039
  2. echo date('d-m-Y', $odp[2]); // wyświetla 01-01-1970


Co robię nie tak? Czy potrzebna jest jakaś dodatkowa konwersja?

Pozdrawiam!
jaslanin
w bazie danych powinieneś zapisywać microtime jako float czyli wartość wywołaną funkcją microtime(1); a nie jak teraz microtime();

wtedy to działało by dobrze przykład:

  1. <?
  2.  
  3. echo date('Y-m-d h:i', microtime(1));
  4.  
  5. ?>


teraz musisz robić konwersję:

  1. <?
  2.  
  3. function badMicrotime2date($microtime)
  4. {
  5. list($microSec, $timeStamp) = explode(" ", $microtime);
  6. return date('Y-m-d, H:i', $timeStamp);
  7. }
  8.  
  9. echo badMicrotime2date(microtime());
  10.  
  11. ?>


Ale najlepiej by było w bazie danych zmienić zapis microtime ze stringa na float, a do wyświetlania używać po prostu funkcji date, tak jak w moim pierwszym przykładzie.
thek
Grrrr... Ty lepiej sięgnij po manual funkcji date i poczytaj, że jedynym akceptowanym parametrem jako timestamp jest integer (choćby niejawnie skonwertowany), a nie string.
Cytat
The optional timestamp parameter is an integer Unix timestamp that defaults to the current local time if a timestamp is not given

Efekt? Twój string zostanie skonwertowany do 0, a to 01-01-1970. Musisz wyciągnąć z tego stringa ciąg datowy zanim poślesz do funkcji date. Choćby poprzez
  1. echo $odp[2]; // wyświetla mi 0.02100800 1301466039
  2. echo date('d-m-Y', $odp[2]); // wyświetla 01-01-1970
  3. $podzial = explode( ' ', $odp[2] );
  4. echo date('d-m-Y', $podzial[1]); //powinien prawidłowo

L0k0
Cytat(thek @ 30.03.2011, 09:57:46 ) *
  1. echo $odp[2]; // wyświetla mi 0.02100800 1301466039
  2. echo date('d-m-Y', $odp[2]); // wyświetla 01-01-1970
  3. $podzial = explode( ' ', $odp[2] );
  4. echo date('d-m-Y', $podzial[1]); //powinien prawidłowo


Wiedziałem, że dzwoni tylko nie wiedziałem, w którym kościele...

Działa, dzięki!
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-2024 Invision Power Services, Inc.