Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Rozpoznanie podanej daty - czas zimowy czy letni, z wykorzystaniem date("I")
jurcio6
post
Post #1





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 4.11.2010

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


Witam,

Mam pewien problem - nie mogę zmusić swojego interpretera do rozpoznania podanej mu daty czy jest ona w czasie letnim, czy zimowym...

  1. <?php
  2. if(date("I", strtotime('2011-01-29')) == 0)
  3. echo 'zimowy';
  4. else
  5. echo 'letni';
  6. //zwraca: zimowy
  7.  
  8. if(date("I", strtotime('2011-09-10')) == 0)
  9. echo 'zimowy';
  10. else
  11. echo 'letni';
  12. //zwraca: zimowy
  13.  
  14. ?>


Czemu w obu przypadkach date("I") zwraca 0? Czy jest tam jakiś błąd? Czy istnieje inny sposób rozpoznawania czasu?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
jurcio6
post
Post #2





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 4.11.2010

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


Ustawienie strefy nic nie daje - efekt nadal ten sam.

Generalnie to chcę uniknąć manipulowania strefą czasową - chodzi głównie o bazę danych. Przyjąłem dla aplikacji model, w którym dane w bazie zapisywane są w oparciu o jedną strefę czasową przez cały rok bez rozróżniania zimy czy lata. Powód jest oczywisty - uniknięcie dublowania godzin zapisu rekordów (większość tabel gromadzących dane ma potrzebny timestamp) lub braku rekordów z danej godziny podczas zmian czasów. W ten sposób rozróżnienie czasu zrzucam jedną prostą funkcją na skrypty wyświetlające dane, a te, w zależności od tego jaki jest czas, mają tłumaczyć daty (dodawać/odejmować godzinę lub pozostawić datę bez zmian).

Samo date("I") działa poprawnie - kiedy był czas letni, to zwracało letni, kiedy zimowy, to zwraca zimowy, ale ja potrzebuję określić ten czas dla podanej konkretnie daty, a nie dla 'teraz'.

//dodam, iż sprawdzałem skrypt na lokalu jak i na serwerze hostingowym, echo date_default_timezone_get(); odpowiednio zwraca Europe/Warsaw

Ten post edytował jurcio6 3.01.2012, 13:38:36
Go to the top of the page
+Quote Post
Uriziel01
post
Post #3





Grupa: Zarejestrowani
Postów: 307
Pomógł: 37
Dołączył: 9.11.2010
Skąd: Zielona Góra

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


Cytat(jurcio6 @ 3.01.2012, 13:29:50 ) *
Ustawienie strefy nic nie daje - efekt nadal ten sam.

Samo date("I") działa poprawnie - kiedy był czas letni, to zwracało letni, kiedy zimowy, to zwraca zimowy, ale ja potrzebuję określić ten czas dla podanej konkretnie daty, a nie dla 'teraz'.


Z całym szacunkiem, nie widzę fizycznej możliwości aby to co mówisz było prawdą. Chcesz mi powiedzieć że interpreter PHP zwraca inny wynik gdy nie podasz mu czasu (czyli 'teraz') a gdy podasz mu te 'teraz' ręcznie ? Oczywiście nikogo nie obrażam, może jedynie nie widzisz czegoś co zmienia się pomiędzy tymi testami.

Ten post edytował Uriziel01 3.01.2012, 14:56:43
Go to the top of the page
+Quote Post

Posty w temacie


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: 9.10.2025 - 09:34