Sto lavorando su un'applicazione calendario. In questo utente da diversi fusi orari creare/visualizzare eventi. Sto pensando di seguire il metodo seguente per salvare il tempo dell'evento in UTC e visualizzarli nell'ora locale dell'utente. Nota: l'utente ha il proprio fuso orario preferito.fuso orario con gestione DST da parte di PHP
Per salvare evento ora di inizio come UTC timestamp:
$timezone = new DateTimeZone($user_timezone_name);
$utcOffset = $timezone->getOffset(new DateTime($event_start_time_string_local));
$event_start_timestamp_local = maketime($event_start_time_string_local);
//Now add/subtract $utcOffset to/from $event_start_timestamp_local to get event's start //time timestamp in UTC and save this result in DB.
Per ottenere evento ora di inizio nel fuso orario dell'utente:
date_default_timezone_set($user_timezone_name);
$eventTimeLocalTime = date("Y-m-d H:i:s", $event_start_timestamp_in_UTC);
Dove:
user_timezone_name is user's timezone setting.
event_start_time_string_local is event's start time string in local/civil time.
event_start_timestamp_in_UTC is event's start time timestamp in UTC.
Le mie domande:
- Se le API PHP utilizzate in precedenza si prendono cura dell'ora legale per tutte le regioni?
- L'ora legale si modifica in anni diversi, in che modo PHP ottiene informazioni su questo? dobbiamo aggiornare PHP? Se è così, dobbiamo aggiornare tutte o particolari le librerie PHP?
Riferimenti: - does-phps-date-default-timezone-set-adjust-to-daylight-saving - get-timezone-offset-for-a-given-location
L'aggiornamento del timezonedb è un'attività regolare, necessaria più volte all'anno, perché ogni volta che un paese esegue una modifica riceve un aggiornamento - e ciò accade abbastanza frequentemente. – Sven
Grazie mille, userò questo –
Perché dobbiamo chiamare 'date_default_timezone_set (' Asia/Kolkata ')' all'inizio? –