我正在處理日曆應用程序。來自不同時區的這些用戶創建/查看事件。 我想按照下面的方法保存UTC中的事件時間並將它們顯示在用戶的當地時間。注意:用戶有他們的首選時區設置。時區與DST處理由PHP
爲了節省事件開始時間爲UTC時間戳:
$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.
要獲取事件的用戶的時區開始時間:
date_default_timezone_set($user_timezone_name);
$eventTimeLocalTime = date("Y-m-d H:i:s", $event_start_timestamp_in_UTC);
其中:
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.
我的問題:
- 以上使用的PHP API是否爲所有地區的DST提供服務?
- DST時間本身在不同年份發生變化,PHP如何獲得有關此信息?我們需要升級PHP嗎?如果是這樣,我們需要升級所有或特定的PHP庫?
參考文獻: - does-phps-date-default-timezone-set-adjust-to-daylight-saving - get-timezone-offset-for-a-given-location
更新timezonedb是一項常規任務,每年需要多次,因爲每當任何國家做了更改,它都會得到更新 - 而且這種情況發生頻率很高。 – Sven
非常感謝,我會用這個 –
爲什麼我們需要在開始時調用'date_default_timezone_set('Asia/Kolkata')'? –