ISO 8601 および java.time
ISO 8601 は、日付と時刻の形式を含む日付と時刻の国際標準です。JavaScript と Java の両方を含む、ほぼすべてのプログラミング言語がサポートされています。
JavaScript では、 を使用して ISO 8601 形式の文字列を生成しますDate.toISOString()
。フォーマッタは必要ありません。
var d = new Date();
var n = d.toISOString();
console.log(n);
結果は、末尾の で示される UTC であることを覚えている限り、ある程度人間が判読できますZ
。
Java では、 を使用して文字列を解析しますInstant.parse()
。ここでもフォーマッタを指定する必要はありません。
String stringFromJavaScript = "2021-07-12T05:54:03.365Z";
Instant inst = Instant.parse(stringFromJavaScript);
System.out.println(inst);
出力:
2021-07-12T05:54:03.365Z
質問はjava.util.Date
、日付ピッカーからの結果を求めました。名前にもかかわらず aは日付を表さないことと、クラスの設計が不十分で古くなっているjava.util.Date
ことの両方の理由から、これを使用することは避ける必要があります。時刻のない日付の場合、aが適切です。Date
Date
LocalDate
LocalDate date = inst.atZone(ZoneId.systemDefault()).toLocalDate();
System.out.println(date);
私のタイムゾーンでは、出力は次のとおりです。
2021-07-12
変換はタイム ゾーンに依存し、JVM のデフォルトのタイム ゾーン (または に渡すタイム ゾーンatZone()
) が日付ピッカーで使用されるものと同じである場合にのみ正しくなります。
Date
まだ java.time にアップグレードされていないレガシー APIが必要な場合:
Date oldfashionedDate = Date.from(inst);
System.out.println(oldfashionedDate);
月 7 12 07:54:03 CEST 2021
リンク