PowerShell中使用::ParseExact解析DateTime报错,求排查问题
解决PowerShell中DateTime::ParseExact的参数错误问题
嘿,我来帮你搞定这个ParseExact的报错问题~
首先看你的报错信息:Cannot find an overload for "parseexact" and the argument count: "3",核心问题是你用的三个参数组合不匹配ParseExact的任何合法重载,而且对参数的用法也有误解。
你的代码问题出在哪?
你同时传递了标准格式符'o'和自定义格式字符串'yyyy-MM-ddTHH:mm:ss.fffzzz',还把它们放在了错误的参数位置上。ParseExact的三参数重载逻辑是这样的:
[datetime]::ParseExact(要解析的字符串, 单个格式规则, 格式提供器)
第二个参数只能是单个格式(要么是标准格式符,要么是自定义格式字符串),第三个参数是格式提供器(比如区域信息,通常用[System.Globalization.CultureInfo]::InvariantCulture来避免区域设置干扰)。
两种正确的写法
1. 使用标准格式符'o'
你的输入字符串正好符合ISO 8601的标准格式,对应'o'格式符,直接用这个写法就行:
[datetime]::ParseExact('2018-05-07T15:19:17.839+03:00', 'o', [System.Globalization.CultureInfo]::InvariantCulture)
2. 使用自定义格式字符串
如果你想用自定义格式来匹配输入,只需要传递对应的格式字符串作为第二个参数,同时指定格式提供器:
[datetime]::ParseExact('2018-05-07T15:19:17.839+03:00', 'yyyy-MM-ddTHH:mm:ss.fffzzz', [System.Globalization.CultureInfo]::InvariantCulture)
额外小提示
如果不想指定具体的格式提供器,也可以传$null,但推荐用InvariantCulture,避免因为系统区域设置不同导致解析失败。
内容的提问来源于stack exchange,提问作者shagrath9212
相关产品推荐
相关产品推荐

