)ISO 8601で日付をフォーマットするにはどうすればよいですか?例:2009-06-15T13:45:30
ISO 8601の日付形式を取得する(例:2009-06-15T13:45:30
文字パターンでDateTimeFormatter
を作成しなくても、Javaから標準的な方法で生成できますか?
私はそれがMSのドキュメントで使用される参照してください。 Standard Date and Time Format Strings
)ISO 8601で日付をフォーマットするにはどうすればよいですか?例:2009-06-15T13:45:30
ISO 8601の日付形式を取得する(例:2009-06-15T13:45:30
文字パターンでDateTimeFormatter
を作成しなくても、Javaから標準的な方法で生成できますか?
私はそれがMSのドキュメントで使用される参照してください。 Standard Date and Time Format Strings
簡単な方法:
static void time() {
final DateTimeFormatter fmt = DateTimeFormatter.ISO_LOCAL_DATE_TIME;
OffsetDateTime.now().truncatedTo(ChronoUnit.SECONDS).format(fmt);
Instant.now().atOffset(ZoneOffset.ofHours(1)).truncatedTo(ChronoUnit.SECONDS).format(fmt);
Instant.now().atOffset(ZoneOffset.UTC).truncatedTo(ChronoUnit.SECONDS).format(fmt);
OffsetDateTime.parse("2007-12-03T10:15:30+01:00").format(fmt);
LocalDateTime.parse("2009-06-15T13:45:30").format(fmt);
}
私は、これは一般に「ISO」の日付と呼ばれていると思います。
Date: 2017-02-21
Combined date and time in UTC: 2017-02-21T10:26:42+00:00
2017-02-21T10:26:42Z
20170221T102642Z
明確にするために一つのこと:次のような例を与えるwikipediaに記載
]、あなたの例では、任意のタイムゾーン情報なしで行くの。彼らは「現地時間」とみなされるべきです。
この文字列では、Tは、標準ISO 8601の日付時刻文字列の時刻コンポーネントで、<date>T<time>
で表されます。ウィキペディアはこの標準フォーマットについてです。 Javaで
、私はちょうど例えばここGMT
を使用していた
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
にそれを使用するためにこれを行うことができます。必要に応じてタイムゾーンを設定できます。およそTimeZone
ここではドキュメントであるlink
ISO-8601 をより多くの情報を取得するには、ある一時点における、完全な日付表現、区切り文字として文字T、および有効な時間表現を連結することによって表現することができます。たとえば、「2007-04-05T14:30」となります。
このような日付の形式は、タイムゾーンなしのISO 8601のローカル日付時刻です。 ISO 8601による表現ウィキペディア、日付と時間によるは以下のとおりです。
Date: 2017-02-21 Combined date and time in UTC: 2017-02-21T12:34:46+00:00 2017-02-21T12:34:46Z 20170221T123446Z ...
Javaで、このような形式の文字列を作成するには、いくつかの方法があります。 Java 8では、最も簡単な方法は、組み込みの解析パターンLocalDateTime
を使用することです。 ZonedDateTime
を使用しない理由は、この日付のタイムゾーンが不明であるためです。
// str -> date
LocalDateTime d = LocalDateTime.parse("2009-06-15T13:45:30");
// date -> str
String text = d.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME);
修正:[ISO 8601](https://en.m.wikipedia.org/wiki/ISO_8601)標準で定義されており、オフセット*を持たない "local"日時値は*定義されています。 –
私の答え、@BasilBourqueをお読みいただきありがとうございます。回答が更新されました:) –
https://en.wikipedia.org/wiki/ISO_8601 –
これは、ISO 8601フォーマットであり、 "s"(ソート可能)形式指定子(C#)を使用して、そのような文字列をフォーマットすることができます。 – Evk
@Evk *ほとんど* ISO 8601形式です - タイムゾーン識別子がありません。 – 1615903