PowerShell如何将OpenSSL返回的日期字符串解析为DateTime类型
正确实现
如果运行环境的默认区域为英文,可直接使用最简写法:
[datetime]::ParseExact($datestring, "MMM dd HH:mm:ss yyyy", $null)
为了兼容所有区域的运行环境,避免英文月份缩写识别失败,建议指定固定的英文区域规则:
$invariantCulture = [System.Globalization.CultureInfo]::InvariantCulture $parsedDateTime = [datetime]::ParseExact($datestring, "MMM dd HH:mm:ss yyyy", $invariantCulture)
之前写法失败的原因
- 第一次写法问题:
- 格式字符串遗漏了匹配日期(原字符串中
Dec后的23)的dd标识符,字符串结构和格式规则不匹配导致解析失败 - 误用了Unix系统的日期格式标识符,.NET的
ParseExact方法不支持%b这类带%前缀的格式标识
- 格式字符串遗漏了匹配日期(原字符串中
- 第二次写法问题:
- 英文月份缩写的匹配标识符错误,.NET中对应规则为
MMM,不是bbb - 分钟单位的匹配标识符错误,大写
MM对应月份数字,分钟需要使用小写mm - 四位数年份的匹配标识符错误,.NET中合法规则为小写
yyyy,大写YYYY不属于标准日期匹配规则 - 同样遗漏了日期的
dd匹配符,且未指定英文区域规则,非英文系统下即使补全格式也可能无法识别Dec这类英文月份缩写
- 英文月份缩写的匹配标识符错误,.NET中对应规则为
内容的提问来源于stack exchange,提问作者GhostJumper
相关产品推荐
相关产品推荐

