给定以下格式的日期/时间字符串:
2021-12-05 21:10:00 UTC,如何将其解析为 Java DateTime 对象?它似乎需要一个格式化字符串,例如uuuu-MM-dd HH:mm:ss,但是我该如何处理“UTC”以及如何确保 Java 对象指定 UTC?
您缺少的是时区说明符,例如。z。
// first
private static final DateTimeFormatter DATETIME_PARSER
= DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss z");
//then
String dateString = "2021-12-05 21:10:00 UTC";
ZonedDateTime dateTime = ZonedDateTime.parse(dateString, DATETIME_PARSER);
Run Code Online (Sandbox Code Playgroud)
这会正确生成您需要的日期时间对象。
也就是说,尚不清楚您是否需要z(时区名称)、VV(时区 ID)或v(通用时区名称),因为它们的含义都略有不同,并且都适用于“UTC”。请参阅文档以了解支持的格式。
编辑:
数据来自位置已知的环境传感器,唯一重要的是日期/时间值是 UTC。
在这种情况下,没关系,只需使用z.
正如评论者正确建议的那样,如果您只关心时间线上的点并且不关心事件起源的时区,您可能需要使用而Instant不是:ZonedDateTime
Instant instant = Instant.from(DATETIME_PARSER.parse(dateString));
Run Code Online (Sandbox Code Playgroud)