所以我一直在寻找如何正确解析传入的日期时间,问题是这个字符串也包含显然由于某种原因无法解析的区域。举一个传入日期时间字符串的例子:
2021-10-05T10:00:00.0000000
现在我尝试了以下操作:
var dateTimeString = "2021-10-05T10:00:00.0000000"
var formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ")
var date = LocalDate.parse(dateTimeString, formatter)
我尝试用空和 ZZZZ 替换 Z,但这不起作用我认为它不起作用,因为加号或减号不存在。仅供参考,由于 Microsoft Graph API 在检索日历事件时,我收到了这种格式的日期。
关于如何正确格式化此日期的任何想法?
编辑:这来自 Microsoft Graph。基本上他们给出了一个日期作为对象:
"start": {
"dateTime": "2021-10-05T10:00:00.0000000",
"timeZone": "UTC"
}
这是解释此日期对象的文档页面: dateTimeTimeZone 资源类型。
更新:
我终于能够解决这个日期问题,我所做的如下:
var inputDateTime = "2021-10-05T10:00:00.0000000"
var inputTimeZone = "UTC"
var zonedDateTime = ZonedDateTime.parse(
inputDateTime,
DateTimeFormatter.ISO_DATE_TIME.withZone(ZoneId.of(inputTimeZone))
).withZoneSameInstant(ZoneId.systemDefault()).toLocalDateTime()
这样,日期将正确转换为正确的时区和正确的日期/时间。