Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Problem z konwersja strefy czasowej
Forum PHP.pl > Forum > Przedszkole
ilidir
witam,

mam problem z konwersją strefyczasowej a mianowicie:

- pobieram sobie date z bazy danych (w bazie danych jest zmianna DateTime)
- przechowuje ją w zmiennej data_xml new DateTime
- w momęcie w którym chce zorbić $data_xml->setTimezone(new DateTimeZone('Europe/Warsaw')); to pojawia mi się błąd: Fatal error: Call to a member function setTimezone() on a non-object ---> dodam tylko iż zmienna data_xml nie posiada wartości null


Jakieś sugestie questionmark.gifquestionmark.gif z góry dziękuję za pomoc.
nospor
Cytat
(w bazie danych jest zmianna DateTime

W bazie nie trzyma się zmiennych tylko wartosci.

1) Pokaz lepiej kod,
2) sprawdz dokładnie co pobierasz z bazy.
ilidir
Kod
$data_xml = new DateTime('24-02-2011');
$kon = "SELECT * FROM temp";
$wykonanie_xml = mysql_query($kon);
while($x = mysql_fetch_assoc($wykonanie_xml)) {
        $data_xml = $x['data_ok'];
        $data_xml->setTimezone(new DateTimeZone('Europe/Warsaw'));
        echo $data_xml;
}



Ad. 1 przepraszam chodziło mi że wartość w baziedanych przechowywana jest w postaci DateTime
Ad. 2 jestem piewien że przechowywane są daty w formacie Rok-miesiąć-dzień godzina-minuta-sekunda

Dodam również iż wszystko co chce to mi działa prócz właśnie tej konwersji strefy czasowej.



pozdrawiam
nospor
$data_xml = $x['data_ok'];
przeciez tu masz wartosc daty a nie obiekt DateTIme...

$data_xml = new DateTime($x['data_ok']);
ilidir
hyh człowiek się uczy całe życie ;/

dzięki błędu już nie mam ale i tak nie konwertuje mi daty do strefy czasowej czyli mam godzine -2h
nospor
Bo tutaj:
$data_xml = new DateTime($x['data_ok']);
tworząc obiekt DateTime musisz jeszcze okreslic w drugim parametrze w jakiej strefie podales ten czas. Jak tego nie okreslisz to bierze bodajze strefę domyslną. Stad masz pewnie blad w czasie.
ilidir
WItam,

dopiero teraz mogłem się nad tym co napisałeśpochylić i wygląda to tak że mam teraz następujący kod:

Kod
$kon = "SELECT * FROM temp";
$wykonanie_xml = mysql_query($kon);
while($x = mysql_fetch_assoc($wykonanie_xml)) {
        $data_plik_xml = new DateTime($x['data_ok'], new DateTimeZone('Europe/Warsaw'));
        $res = $data_plik_xml->format('Y-m-d H:i:sP');
        echo $res;
}


po wykonaniu tego kodu pojawia mi się cośtakiego:

2014-10-13 06:15:57+02:00

a powinna być godzina 8:15

jakieś inne sugestie questionmark.gifquestionmark.gifquestionmark.gif


pozdrawiam i liczę na pomoc.
Pyton_000
Pokaż jaką masz datę wyjściową
ilidir
z bazy danych pobieram daty i są to na przykład:

2014-10-13 06:15:57
2014-04-23 12:14:05

i inne

Pyton_000
Jeżeli w BD daty są zapisane w UTC:
  1. $date = new DateTime('2014-10-13 06:15:57', new DateTimeZone('UTC'));
  2. $date->setTimezone(new DateTimeZone('Europe/Warsaw'));
  3. echo $date->format('Y-m-d H:i:sP');
ilidir
i teraz mam wszsytko jasne smile.gif nie wiedziałem że tak trzeba zrobić smile.gif a teraz śmiga jak szalone dziekuje bardzo smile.gif
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.