【发布时间】:2019-06-07 19:49:52
【问题描述】:
我有以下代码将 Instant 转换为 String,然后将其转换回 I
String timestampString = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss"));
LOGGER.info("timestampString: " + timestampString);
Instant instant =
LocalDateTime.parse(timestampString,
DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss")).toInstant(ZoneOffset.UTC);
它将时间戳字符串打印为:2019-06-07 12:45:57
解析字符串失败:
java.time.format.DateTimeParseException: Text '2019-06-07 12:45:57' could not be parsed: Unable to obtain LocalDateTime from TemporalAccessor: {MinuteOfHour=45, HourOfAmPm=0, NanoOfSecond=0, SecondOfMinute=57, MilliOfSecond=0, MicroOfSecond=0},ISO resolved to 2019-06-07 of type java.time.format.Parsed
为什么即使它与我将时间戳转换成的格式相同,它也无法解析它?
【问题讨论】:
-
提示:更多标签将有助于吸引更多了解您所询问主题的人。
-
基本上,您需要
HH而不是hh。hh是一天中的 12 小时 小时;你想要一天中的 24 小时。 -
我确实想知道 为什么 你将它转换为字符串并返回,请注意 - 请注意
LocalDateTime.now()使用系统时区,而你当时声称它是UTC。如果您可以为您想要实现的目标提供更多背景信息,我们可能会在解析之外为您提供更多帮助。 -
LocalDateTime是跟踪时刻的错误类,如其 Javadoc 中所述。请改用Instant、OffsetDateTime和ZonedDateTime。
标签: java java-time datetime-parsing