Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Problem z konwersja strefy czasowej
ilidir
post 8.10.2014, 09:12:03
Post #1





Grupa: Zarejestrowani
Postów: 183
Pomógł: 14
Dołączył: 27.09.2014

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


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.
Go to the top of the page
+Quote Post
nospor
post 8.10.2014, 09:14:03
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
ilidir
post 8.10.2014, 09:33:12
Post #3





Grupa: Zarejestrowani
Postów: 183
Pomógł: 14
Dołączył: 27.09.2014

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


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
Go to the top of the page
+Quote Post
nospor
post 8.10.2014, 09:50:55
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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

$data_xml = new DateTime($x['data_ok']);


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
ilidir
post 8.10.2014, 10:14:27
Post #5





Grupa: Zarejestrowani
Postów: 183
Pomógł: 14
Dołączył: 27.09.2014

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


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
Go to the top of the page
+Quote Post
nospor
post 8.10.2014, 14:30:33
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
ilidir
post 13.10.2014, 07:22:05
Post #7





Grupa: Zarejestrowani
Postów: 183
Pomógł: 14
Dołączył: 27.09.2014

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


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.
Go to the top of the page
+Quote Post
Pyton_000
post 13.10.2014, 07:24:29
Post #8





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Pokaż jaką masz datę wyjściową
Go to the top of the page
+Quote Post
ilidir
post 13.10.2014, 07:44:34
Post #9





Grupa: Zarejestrowani
Postów: 183
Pomógł: 14
Dołączył: 27.09.2014

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


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

Go to the top of the page
+Quote Post
Pyton_000
post 13.10.2014, 08:31:25
Post #10





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


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');
Go to the top of the page
+Quote Post
ilidir
post 13.10.2014, 09:57:23
Post #11





Grupa: Zarejestrowani
Postów: 183
Pomógł: 14
Dołączył: 27.09.2014

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


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

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

 



RSS Wersja Lo-Fi Aktualny czas: 7.07.2025 - 02:20