2013-01-20 12 views
5

PHP date("I") zwraca 0 lub 1 w zależności od tego, czy bieżąca data jest w świetle dziennym. Jednak potrzebuję tej funkcji, aby zwrócić 0 lub 1 dla określonej daty i czasu w przyszłości lub przeszłości.Data PHP ("I") dla przyszłej lub przeszłej daty

Jakieś pomysły, w jaki sposób można to osiągnąć?

+1

oczywiście, nie ma godziny w październiku, kiedy występuje dany czas zarówno w standardowym czasie i oszczędności światła dziennego, więc istnieje potencjał dwuznaczność tutaj. Jest to dość mały potencjał, ale istnieje. – Spudley

Odpowiedz

11

Wystarczy zdać datownik z datą przyszłą jak ten:

is_daylisght_saving = date("I", future_timestamp); 

See PHP dokumentacji date()

***** EDIT: **

Aby prawidłowo uzyskać informacje letniego musisz upewnić się, że domyślne ustawienia regionalne są ustawione na kraj z użyciem czasu letniego. Lista krajów korzystających z czasu letniego znajduje się pod adresem here.

Aby zmienić domyślną strefę czasową używać date_default_timezone() następująco:

date_default_timezone_set('Europe/Rome'); // Italy uses daylight saving 
echo date("I", 1366456706); // will return 1 

date_default_timezone_set('America/Argentina/Buenos_Aires'); // Argentina doesn't use daylight saving 
echo date("I", 1366456706); // will return 0 
+1

Dzięki za odpowiedź Tomas, ale próbowałem, i to nie działa. Mam sygnaturę czasową 1366456706, która przekłada się na 20 kwietnia 2013 r. I mieści się w czasie letnim. Kiedy otrzymam ten znacznik czasu konwertowany za pomocą konwertera znacznika czasu, wyświetlany jest wskaźnik GMT +1, który wskazuje, że jest on w świetle dziennym, ale data ("I") wciąż zwraca zero. próbowałem to: date ("I", "1366456706"); ale nie szczęście – Ahmed

+0

future_timestamp jest liczbą całkowitą, a nie łańcuchem. Spróbuj daty ("I", 1366456706); –

+0

dziękuje Tomasowi, ale wciąż zwraca 0. jeśli skopiuję i wkleja ten datownik na stronie internetowej, która konwertuje sygnatury czasowe do daty i czasu mówi GMT + 1. czy jest jakiś inny sposób na szybkie określenie pogody, kiedy znacznik czasu ma ten status GMT + 1? Dzięki – Ahmed