私はカレンダーアプリケーションに取り組んでいます。このユーザーでは、さまざまなタイムゾーンのユーザーがイベントを作成/表示します。イベント時間をUTCで保存し、ユーザーの現地時間で表示するには、以下の方法に従うことを考えています。注: ユーザーには好みのタイムゾーン設定があります。
イベントの開始時刻を 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