首页 > 解决方案 > Powershell 解析日期 ISO8601

问题描述

我有一个我认为是 ISO8601 格式的日期字符串(虽然我不是 100% 确定),例如

20200210T165905+0000

我想用powershell解析这个并尝试了以下

$Date = "20200210T165905+0000"
$DatePattern = "yyyyMMdd\THHmmss\+zzzz"
$DateTime = [DateTime]::ParseExact($Date, $DatePattern, $null)

但我收到以下错误

Exception calling "ParseExact" with "3" argument(s): "String was not recognized as a valid DateTime."

我究竟做错了什么?

标签: powershelldatetime

解决方案


您拥有的 Dateformat 需要不同的模式,其中时区信息由K.

+0000表示日期为 UTC 时间(偏移量 0)。如果删除它,则日期字符串将被解析为 LOCAL DateTime,从而为您提供错误信息(除非您居住在 UTC 与本地时间相同的世界某个地方)

$Date = "20200210T165905+0000"
$DatePattern = "yyyyMMddTHHmmssK"
$DateTime = [DateTime]::ParseExact($Date, $DatePattern, $null)
$DateTime

返回(在我的 NL 语言环境中 => UTC + 1)

10-2-2020 17:59:05

推荐阅读