Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] Microtime + date, Jak to połączyć by otrzymać datę z microtime'u?
L0k0
post
Post #1





Grupa: Zarejestrowani
Postów: 161
Pomógł: 4
Dołączył: 18.03.2011

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


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!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
jaslanin
post
Post #2





Grupa: Zarejestrowani
Postów: 511
Pomógł: 143
Dołączył: 13.03.2010
Skąd: Jasło

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


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.

Ten post edytował jaslanin 30.03.2011, 08:48:21
Go to the top of the page
+Quote Post
thek
post
Post #3





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




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

Go to the top of the page
+Quote Post
L0k0
post
Post #4





Grupa: Zarejestrowani
Postów: 161
Pomógł: 4
Dołączył: 18.03.2011

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


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!
Go to the top of the page
+Quote Post

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: 22.08.2025 - 20:27