2013-01-20 18 views
5

Il codice PHP date("I") restituisce uno 0 o 1 a seconda se la data corrente è in ora legale. Tuttavia, ho bisogno di questa funzione esatta per restituire uno 0 o 1 per una data e un'ora specificate in futuro o passato.Data PHP ("I") per una data futura o passata

Qualche idea su come raggiungere questo obiettivo?

+1

naturalmente, c'è un'ora nel mese di ottobre, quando si verifica il tempo determinato sia nel tempo normale e l'ora legale, quindi non c'è potenziale ambiguità qui. È un potenziale abbastanza piccolo, ma è lì. – Spudley

risposta

11

basta passare il timestamp della data futura in questo modo:

is_daylisght_saving = date("I", future_timestamp); 

See PHP date() documentazione

***** EDIT: **

Per ottenere correttamente le informazioni legale è necessario assicurarsi che le impostazioni internazionali predefinite siano impostate su un paese utilizzando l'ora legale. L'elenco dei paesi che utilizzano l'ora legale può essere trovato here.

al cambiamento della destinazione del fuso orario predefinito date_default_timezone() come segue:

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

Grazie per la tua risposta Tomas, ma ci ho provato e non funziona. Ho ottenuto un timestamp di 1366456706 che si traduce in 20 aprile 2013 e rientra nell'ora legale. Quando ottengo questo timestamp convertito tramite un convertitore di timestamp, si dice GMT +1 che indica che è in ora legale ma la data ("I") sta ancora restituendo zero. ho provato questo: data ("I", "1366456706"); ma non fortuna – Ahmed

+0

future_timestamp è un numero intero, non una stringa. Prova la data ("I", 1366456706); –

+0

grazie Tomas, ma ancora restituendo 0. se copio e incollo il timestamp su un sito web che converte timestamp per data e ora dice GMT + 1. c'è forse un altro modo per determinare rapidamente il tempo in cui un timestamp ha questo stato GMT + 1? Grazie – Ahmed