現在のタイムスタンプを ISO 8601 形式で取得
- Java における ISO 8601 形式の重要性と使用法
-
ISO 8601 形式での
T
とZ
の使用 - UTC タイム ゾーンを使用して現在のタイムスタンプを ISO 8601 に変換する
- ISO 8601 形式を使用する利点
Java やその他のプログラミング言語では、文字列を日付に変換することは基本的なスキルの 1つです。 日付を文字列形式で保存し、それを Date
オブジェクトに変換してプロジェクトを進めるのは非常に簡単です。
この記事では、現在のタイムスタンプを ISO 8601 形式で取得する方法を説明します。 ISO 8601 形式と、プロジェクトで ISO 8601 形式を使用する理由と方法について学びましょう。
Java における ISO 8601 形式の重要性と使用法
日付と時刻の形式は、会議や会議を手配したり、顧客に対応したりする必要がある場合に特に重要です。 しかし、このデジタル時代において、世界中のさまざまなタイムゾーンを誰にとっても理解しやすい標準形式で指定することは容易ではないようです。
この問題を的確に解決するのが国際規格ISO8601フォーマットです。 国際標準化機構 (ISO) の日付/時刻形式を使用して、数値の日付/時刻を指定できます。時刻はオプションです。
国境を越えたすべての利害関係者は、この国際標準を使用して日時を指定できます。 ISO 8601 の日付表現はグレゴリオ暦に基づいていることに注意してください。
ISO 8601 形式では、年で始まり、その後に月、日、時、分、秒、ミリ秒が続く日付/時刻を指定します。
たとえば、2022-09-30 15:00:00.000
は 2022 年 9 月 30 日の午後 3 時を示します (ゾーン オフセットを指定していないため、このタイムスタンプは現地時間です。これについては、このチュートリアルの後半で学習します)。 以下は、ISO 8601 を使用した日付/時刻の表形式の表現です。
ISO 8601 フォーマット | 値の範囲 |
---|---|
年 (Y ) |
YYYY 、4 桁。 2 桁に短縮することもできます。 |
月 (M ) |
MM 、01-12 |
週 (W ) |
WW 、01-53 |
日 (D ) |
D 、曜日、1-7 |
時間 (h ) |
hh , 00-23 ここで、24:00:00 は終了時刻として |
分 (m ) |
mm , 00-59 |
秒 (s ) |
ss , 00-59 |
小数 (f ) |
秒の端数、任意の精度 |
ISO 8601 形式での T
と Z
の使用
タイムスタンプ 2022-09-30T20:18:46.384Z
があるとします。 ここで、T
は何の略でもありません。 これは、ISO 8601 の日付/時刻形式で必要な単なる区切り記号です。
T
は Time の省略形として読み取ることができますが、Z
は UTC (協定世界時) から 0 オフセットされているため、ゼロのタイムスタンプに使用されます。
次の例で T
と Z
の使い方を理解しましょう。
2022-09-30T15:50+00
- 2022 年 9 月 30 日午後 3 時 30 分、ユニバーサル タイム ゾーン。2022-09-30T15:50+00Z
- 2022 年 9 月 30 日午後 3 時 30 分、表記にZ
を追加した世界時の時間帯。2022-09-30T15:50-04:00
- 2022 年 9 月 30 日の午後 3 時 30 分、ニューヨークのタイム ゾーン (夏時間の UTC)。
ISO 8601 の日付形式については十分に学習しました。 Java でそれを実行し、UTC で現在の日付/時刻を取得する方法を見てみましょう。
UTC タイム ゾーンを使用して現在のタイムスタンプを ISO 8601 に変換する
コード例:
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
public class Test {
public static void main(String args[]) {
TimeZone timezone = TimeZone.getTimeZone("UTC");
//"Z" indicates UTC, which means no timezone offset
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
dateFormat.setTimeZone(timezone);
String ISODate = dateFormat.format(new Date());
System.out.println(ISODate);
}
}
出力:
2022-09-30T07:20:52Z
Test
の main()
メソッドでは、最初に getTimeZone()
メソッドを使用します。このメソッドは、文字列型の引数を取り、タイム ゾーンを取得します。 このメソッドは、DateFormat
のカレンダーに関連付けられたタイム ゾーンを返します。
次に、データの解析とフォーマットに役立つ SimpleDateFormat
クラスを使用します。 日付をある形式から別の形式に変換するのに役立ちます。
必要な日付/時刻形式を指定して、このクラスをインスタンス化します。
次に、setTimeZone()
メソッドを使用してタイム ゾーンを設定し、getTimeZone()
メソッドによって返された値を保持するパラメーターを渡します。 その後、dateFormat
オブジェクトを使用して、指定された日付をフォーマットします。
最後に、現在は ISO 8601 形式になっている日付を出力します (上記の出力を参照)。
さて、問題は、なぜこの特定の形式を使用しているのかということです。 それにはいくつかの利点がありますか? 以下でそれらを見てみましょう。
ISO 8601 形式を使用する利点
以下は、ISO 8601 形式を他の一般的な形式よりも使用するいくつかの利点です。
- ソフトウェアによる読み書きが容易です。
- 文字列比較で比較・ソートが簡単にできます。
- 日付の後に時間が続く文字列は、比較/ソートが簡単です。 たとえば、
2022-09-30 10:15:00
です。 - 各国語に関係なく理解しやすく、一般的に使用される他の日付バリアントと混同することはありません。
- 表記は一定の長さで簡潔です。 さらに、4 桁の年は、世紀の変わり目に問題を引き起こすことはありません。
- この日付形式
年-月-日
は、たとえば韓国、ハンガリー、スウェーデン、日本、およびその他の国で広く使用されています。
この形式は中国語の日付表現と同じです。つまり、ほぼ 25% がすでにこのシステムに精通しています。
おわかりのように、ISO 8601 形式を使用することには複数の利点があり、使いやすく、理解しやすいものでもあります。 したがって、アプリケーションでこの日付形式を学習して使用することは重要です。