intra-mart Accel Platform タイムゾーン仕様書 初版 2024-06-28

3. 概要

本章では、タイムゾーンや夏時間、日付と時刻の形式に関する一般的な内容を説明します。
また、アプリケーションの日付や時刻に関わる一般的な対応についても説明します。

3.1. タイムゾーンについて

タイムゾーンは、地球上の特定の地域で共通に使用される時間の基準を指します。地球上では、地域によって太陽の位置が異なるため、時刻も異なります。タイムゾーンを設定することで、世界中で共通の時間を使用できます。

下表に世界の一部の都市の UTC からの時差(オフセット)を示します。なお、UTC は世界協定時を表し、タイムゾーンの基準となる時間です。
地域(タイムゾーン識別子) オフセット
ロンドン(Europe/London) UTC+0
ニューヨーク(America/New_York) UTC-5
東京(Asia/Tokyo) UTC+9
../../_images/timezone1.png

異なるタイムゾーン間では、時差が発生します。
例えば、ロンドン(Europe/London)が “2024-01-01T00:00:00+00:00” であれば、他の地域での同時刻は下表の通りです。
地域(タイムゾーン識別子) 時刻
ロンドン(Europe/London) 2024-01-01T00:00:00+00:00
ニューヨーク(America/New_York) 2023-12-31T19:00:00-05:00
東京(Asia/Tokyo) 2024-01-01T09:00:00+09:00

3.2. 夏時間について

夏時間とは、夏期に時計を一定時間進めることで、日の出や日の入りに合わせて活動時間を調整する制度のことです。主な目的は、夕方の明るい時間を有効活用し、生活の質の向上やエネルギー消費を抑えることにあります。

夏時間は国や地域によって実施期間が異なります。日本など夏時間を導入していない国や地域もあります。
国・地域 夏時間開始日 夏時間終了日
アメリカ 3月第2日曜日 11月第1日曜日
イギリス 3月最終日曜日 10月最終日曜日
日本 なし なし
夏時間は、一般的に標準時を1時間進めることで実施されます。
  • 夏時間開始日: 標準時を1時間進めます。
  • 夏時間終了日: 標準時を1時間戻します。
夏時間開始日は、1時間進められることで、スキップされる時間帯が存在し、23時間で1日が終わります。
夏時間終了日は、1時間戻されることで、重複する時間帯が存在し、25時間で1日が終わります。

例えばニューヨークの場合、2023年3月12日の午前2時に夏時間が開始しました。
夏時間開始時は、“01:59:59” から “03:00:00” に1時間進められました。これにより2時台がスキップされました。
../../_images/dst1.png
そして、2023年11月5日の午前2時に夏時間が終了しました。
夏時間終了時は、“01:59:59” から “01:00:00” に1時間戻されました。これにより1時台が2度訪れました。
../../_images/dst2.png

3.3. 日付と時刻の形式について

日付と時刻の形式とは、年、月、日、時、分、秒などの情報をどのように表現するかを定義したものです。
日付と時刻の形式の国際標準として、ISO 8601 があります。
ISO 8601 は、日付と時刻の表現方法を世界共通で定めた規格で、年、月、日、時、分、秒、ミリ秒、オフセットの順に記載します。
ISO 8601 には、基本形式と拡張形式があます。
例えば、日本時間の2012年9月10日の午後6時を拡張形式では、“2012-09-10T18:00:00+09:00” と表記します。
ISO 8601 は国際標準ですが、広く一般的に利用されているわけではありません。

より一般的な日付と時刻の表現方法は、地域や文化によって異なります。
もし、地域に合った形式で表示しなかった場合、思わぬ誤解が生じる場合があります。
例えば、“12/09/10” と表示された日付は、地域によって以下の様に意味が異なります。
地域 意味
日本 2012年9月10日
英国 2010年9月12日
米国 2010年12月9日

3.4. アプリケーションの日付や時刻に関わる対応について

アプリケーションのユーザがそれぞれ異なる地域や文化圏に住んでいることを想定した場合、ユーザごとに日付と時刻の形式やタイムゾーンが異なります。
アプリケーションは、ユーザの利便性を向上させるために、日付と時刻の形式およびタイムゾーンを柔軟に設定できることが求められます。
アプリケーションは、一般的に日付や時刻に関わる対応として、以下の点を考慮する必要があります。
  1. ユーザによる日付と時刻の形式やタイムゾーンの設定
    ユーザごとに住んでいる地域に合ったタイムゾーンを設定できる必要があります。
    ../../_images/application1.png
    また、ユーザごとに日付と時刻の形式を設定できる必要があります。
    ../../_images/application6.png
  2. ユーザの設定に応じた日付や日時の表示
    画面等のユーザインタフェースにおいて、ユーザのタイムゾーンに基づいて、日付や日時を表示する必要があります。
    ../../_images/application2.png
    また、誤解が生じないようにユーザが設定した形式に従って、日付や日時を表示する必要があります。
    ../../_images/application7.png
  3. ユーザの設定に応じた日付や日時の入力
    画面等のユーザインタフェースによるユーザからの入力については、ユーザのタイムゾーンに基づいていることを想定する必要があります。
    ../../_images/application3.png
    また、ユーザが設定した形式に従って、日付や日時を入力できる必要があります。
    ../../_images/application8.png
  4. 夏時間への対応
    夏時間を実施している地域では、夏時間の開始と終了時刻を正しく認識し、日付や日時の表示を調整する必要があります。
    ../../_images/application4.png
  5. システムで一意のタイムゾーンによるログ出力
    ログは、行ごとに異なるタイムゾーンに基づいて日時が出力されていると、時系列に確認することが困難です。
    ログは、システムで一意なタイムゾーンに基づいて、日時を出力する必要があります。
    ../../_images/application5.png
このように、ユーザごとに異なるタイムゾーンや日付と時刻の形式に対応することで、ユーザが自身に合った日付や日時を確認できます。
日付や時刻に関わる対応は、アプリケーションのユーザビリティの向上に大きく貢献する重要な機能です。