То, как время Java обрабатывает такие простые вещи, как временные метки, меня немного ошеломляет. Может быть, я делаю это неправильно.
Я хочу создать строку временной метки ISO 8601. Очевидным способом было бы создать Instance.now()
и отформатировать его, используя DateTimeFormatter.ISO_INSTANT
для его форматирования. За исключением того, что Instance
не имеет метода format()
, поэтому я не могу отформатировать его с помощью средства форматирования «экземпляр». Представь это.
Поэтому мне нужно создать ZonedDateTime
из экземпляра. Неважно, какую зону я выберу, поэтому я выбираю UTC, потому что DateTimeFormatter.ISO_INSTANT
все равно его поместит:
Instant.now().atZone(ZoneOffset.UTC).format(DateTimeFormatter.ISO_INSTANT)
Теперь я возвращаю строку, и, очевидно, я хочу вернуть ее в экземпляр ZonedDateTime
, потому что это то, что я использовал для ее форматирования! Итак, я пытаюсь:
ZonedDateTime.parse(timestamp, DateTimeFormatter.ISO_INSTANT)
У меня жалуется, что нет информации о часовом поясе. Но я использовал ZonedDateTime
для его создания --- не моя вина, что он не позволил мне использовать Instance
для его форматирования.
Как ни странно, у Instance
нет метода format()
, но есть метод parse()
, который, как ни странно, анализируется с использованием DateTimeFormatter.ISO_INSTANT
(хотя я не могу отформатировать Instance
с помощью этого средства форматирования).
Как указано в комментариях, я могу использовать DateTimeFormatter.ISO_INSTANT.format(Instance.now())
для прямого форматирования экземпляра, так почему же нет Instance.format(…)
?
Таким образом, просто создание и анализ временной метки кажется запутанным и непоследовательным. Или я делаю это неправильно?
Instant
DateTimeFormatter.ISO_INSTANT.format(...)
, не так ли? - person lexicore   schedule 13.12.2016DateTimeFormatter.format(…)
. Тем не менее, странно, чтоInstant
не имеет методаformat(…)
, если он работает сDateTimeFormatter.format(…)
. И тогда другая проблема становится еще большей несогласованностью: я могу использоватьDateTimeFormatter.ISO_INSTANCE
для форматированияInstance
, но не для обратного анализа! - person Garret Wilson   schedule 13.12.2016