![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 251 Pomógł: 2 Dołączył: 24.08.2005 Ostrzeżenie: (0%) ![]() ![]() |
Nie wiem za bardzo skad sie bierze przesuniecie o godzine, jezeli chodzi o interpretacje tej samej liczby reprezentujacej date przez php oraz JS. 1. Czy funkcja time() zwarca znacznik aktualnego czasu GTM+0 ![]() 2. Czy JS na wejsciu przyjmuje czas GTM+0, a na wyjsciu uwzglednia przesuniecie lokalnego czasu ![]() 3. Jak sie ma sprawa z czasem letnim/zimowych, czy to jest w jakis sposob uwzgledniane ![]() --- Generalnie php ma zapisywac czasy dodania wiadomosci. W chwili otwarcia strony beda one przeslane do przegladarki bez zadnej obrobki. Dopiero JS ma sie za to zabrac i wyswietlic dane przeliczone na czas lokalny. To tak jak na forum - wyswietla sie data dodania postu - w kazdym kraju lokalna w zaleznosci od strefy czasowej. Ja chce to osiagnac przy pomocy JS, aby php nie dokonywalo zadnych obliczen. Jakich funcji uzyc po strone php a jakich po stronie JS zeby dzialalo to poprawnie i uwzglednialo czas letni/zimowy. |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 199 Pomógł: 5 Dołączył: 8.07.2004 Skąd: gdynia Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli testujesz skrypt na serwerze zdalnym to może to być wina stref czasowych bo patrzyłem u siebie na localu i wyświetlało dokładnie tą samą godzinę...
Ten post edytował angel2953 12.11.2005, 00:25:39 -------------------- Sygnaturkę ukradli
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 853 Pomógł: 25 Dołączył: 27.08.2003 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
- time() zwraca czas lokalny
- czas pobierany jest po prostu z serwera (w przypadku php) albo komputera uzytkownika (javasrcipt), tak wiec uwzglednianie sa DST jelsi tylko sa uwzglednione na serwerze/komputerze - przydatna strona : http://timeanddate.com/ - dla twojego problemu proponowalbym nastepujace rozwiazanie : najpierw po stronie php uzyc funkcji gmmktime() a potem po stronie klienta wykorzystujac date.getTimezoneOffset(), ktore zwraca aktualne przesuniecie w minutach, pokazac wlasciwy czas EDIT - a, mozna tez prawie wszystko przerzucic do php. w js tylko ustwiac cookie z aktualnym przesunieciem (getTimezoneOffset) a potem korzystac z tego w php Ten post edytował sopel 12.11.2005, 09:04:02 -------------------- "If debugging is the process of removing bugs, then programming must be the process of putting them in..."
sobstel.org |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 853 Pomógł: 25 Dołączył: 27.08.2003 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Cytat(kufalo @ 2005-11-12 12:48:09) Cytat time() zwraca czas lokalny nie jestem do konca pewien, ale wydaje mi sie jednak, ze time() zwarca czas na poludniku 0...time() nie zwraca GMT, poza sytuacjami kiedy serwer zwraca czasy w strefie GMT. mozliwe ze masz np. serwer ustawiony na GMT (nie znam dokladnie zagadnienia ustawien czasu serwera wiec nie wiem jak to dokladnie wyglada i nie wiem czy to jest mozliwe, wiec tu nie pomoge). u mnie podobnie jak u angel2953 zwraca ten sam czas (komputer mam ustawiony na CET) -------------------- "If debugging is the process of removing bugs, then programming must be the process of putting them in..."
sobstel.org |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 251 Pomógł: 2 Dołączył: 24.08.2005 Ostrzeżenie: (0%) ![]() ![]() |
Cytat time() nie zwraca GMT, poza sytuacjami kiedy serwer zwraca czasy w strefie GMT. mozliwe ze masz np. serwer ustawiony na GMT (nie znam dokladnie zagadnienia ustawien czasu serwera wiec nie wiem jak to dokladnie wyglada i nie wiem czy to jest mozliwe, wiec tu nie pomoge). No wiec moje php stoi na Windowsie z ustawiona strefa czasowa dla Warszawy GTM+1. Po uruchomieniu skrypu w przegladarce znajdujacej sie na tym samym komputerze co serwer php otrzymuje: Cytat 12.11.2005 12:16.30 12.11.2005 13:16.30 Jezeli zmienie strefe czasu lokalnego w windowsie na Londyńską GTM dostaje: Cytat 12.11.2005 12:16.30 12.11.2005 12:16.30 Jak dla mnie wniosek z tego taki, ze php zwraca mi zawsze czas GTM (w Londynie) niezaleznie od tego jaka mam strefe ustawiona w systemie. No chyba ze ta strefe sie konfiguruje gdzies w php.ini i php nie odczytuje jej z systemu ![]() Ten post edytował kufalo 12.11.2005, 13:20:28 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 853 Pomógł: 25 Dołączył: 27.08.2003 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
dziwna sytuacja, podziel sie prosze informacja o tym jaka wersje php masz a jaki serwer www (apache/iis) i jaka wersja
![]() EDIT: mzoesz przejrzec bugs.php.net i oczywiscie google. byc moze to znany problem Ten post edytował sopel 12.11.2005, 13:37:26 -------------------- "If debugging is the process of removing bugs, then programming must be the process of putting them in..."
sobstel.org |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 251 Pomógł: 2 Dołączył: 24.08.2005 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Apache/2.0.55 (Win32) php/5.1.0 Moze gdzies w ustawieniach Apacha lub php podajemy strefe czasowa serwera ![]() Zastanawiam sie czy jest w php jakas funkcja zwracajaca strefe czasowa serwera ![]() dokopalem sie w phpinfo() do nastepujacych ustawien mojego php: Cytat date/time support enabled Default timezone UTC date.timezone no value tylko nie wiem za bardzo ktora to strefa UTC. Niestety nie moge sie doszukac w pliku httpd.conf ani php.ini tych ustawien. Prawdopodobnie nie jest mozliwa konfiguracja. sopel, mozesz podac co wyswietla Twoje phpinfo() ![]() Ten post edytował kufalo 26.11.2005, 13:47:06 |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 853 Pomógł: 25 Dołączył: 27.08.2003 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
i juz wszystko jasne, UTC to wlasnie GMT
ja nie mam ani w phpinfo ani php.ini ustawionego date.timezone EDIT: z tego co wlasnie wyczytalem (http://pl.php.net/manual/en/ref.datetime.php#datetime.constants) to date.timezone jest dostepne od 5.1.0. zobacz tez to date_default_timezone_set" title="Zobacz w manualu php" target="_manual i date_default_timezone_get" title="Zobacz w manualu php" target="_manual Ten post edytował sopel 12.11.2005, 14:04:47 -------------------- "If debugging is the process of removing bugs, then programming must be the process of putting them in..."
sobstel.org |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 251 Pomógł: 2 Dołączył: 24.08.2005 Ostrzeżenie: (0%) ![]() ![]() |
Jezeli masz php 5.x powiedz mi prosze, co ci wyswietli:
Teraz zagadka dla mnie jest jak napisac funkcje, aby mi php zwrocilo czas jaki panuje w Londynie. Niezaleznie na jaki serwer wrzuce skrypt nie znajac jego strefy czasowej. Ten post edytował kufalo 12.11.2005, 14:12:04 |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 853 Pomógł: 25 Dołączył: 27.08.2003 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
mam php 5.0.5, a to zostalo wprowadzone dopiero od 5.1
po prostu uzyj date_default_timezone_set" title="Zobacz w manualu php" target="_manual -------------------- "If debugging is the process of removing bugs, then programming must be the process of putting them in..."
sobstel.org |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 251 Pomógł: 2 Dołączył: 24.08.2005 Ostrzeżenie: (0%) ![]() ![]() |
Cytat time() zwraca czas lokalny time() nie zwraca czasu lokalnego ani czasu UTC (GTM) lecz zgodnie z manualem: Cytat Returns the current time measured in the number of seconds since the Unix Epoch (January 1 1970 00:00:00 GMT). liczbę sekund od 1 stycznia 1970 00:00:00 GMT (czasu londynskiego). Znacznik ten jest na calym swiecie z danym momencie jednakowy, niezaleznie od wersji php oraz ustawien date_default_timezone_set(). Wszystko zalezy jak wykorzysta sie jego wartosc. Funcja date() przy formatowaniu daty ze znacznika automatycznie dolicza przesuniecie czasu lokalnego. Natomiast fukcja gmdate() nie wprowadza tej korekty, czyli otrzymujemy czas UTC (GTM, londynski). --- Zamieszanie z roznica czasow, jakie wyswietlal pierwszy moj skrypt wzielo sie stad, ze funcja php date() (jak rowniez funkcje JS: getDate(), getMonth(), getFullYear(), getHours(), getMinutes(), getSeconds()) formatuje date czasu lokalnego ze znacznika czasu. Poniewaz w php mialem zdefiniowany czas lokalny londynski (dla funkcji date()), a w windowsie (dla JS) polski powstawala roznica 1h. A tak to powinno wygladac, aby nie dochodzilo do roznic:
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 29.06.2025 - 20:04 |