Время Java: как интерпретировать время формата ISO_DATE_TIME - PullRequest
0 голосов
/ 02 апреля 2019

Я не совсем понимаю, что означает этот формат даты:

2019-05-01T02: 00: 00 + 02: 00 [Европа / Мадрид]

Форматируется с помощью ISO_DATE_TIME DateTimeFormatter.

Код, стоящий за ним:

public void meth(Date d) {
    LOG.info(date.toInstant()
        .atZone(ZoneId.systemDefault())
        .format(DateTimeFormatter.ISO_DATE_TIME)
    );
}

Означает ли это, что в Мадриде время 00:00:00 или 02: 00: 00?

Я имею в виду, во сколько мадридцы смотрят на свои часы?

Ответы [ 2 ]

3 голосов
/ 02 апреля 2019

Время в Мадриде - 02:00:00. +02:00 - это смещение от UTC , поэтому время UTC составляет 00: 00: 00.

1 голос
/ 02 апреля 2019

Стандарт ISO, к которому относится эта константа, - это ISO 8601, который также используется в качестве формата в XML-документах, где он называется W3CDTF.Последний описан в W3C и немного легче для понимания, чем исходный соответствующий стандарт в ISO и является бесплатным вместо требований ISO 159 CHF ...

Относительно вашего вопроса о фактическом времени: время в Мадриде 02:00:00, информация о часовом поясе позволяет вам делать расчеты с другим часовым поясом.Это довольно часто встречается и в электронной почте, где заголовок даты содержит дату с TZ-информацией:

Дата: понедельник, 1 апреля 2019 12:30:36 + 0100

, который позволяет вашему почтовому клиенту показывать вам дату письма как 13:30:36, если вы проживаете, например, в Германии, и позволяет вам правильно сортировать почту по дате.

...