You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何PowerShell中ParseExact无法将字符串转换为DateTime类型?

问题原因与解决办法

为什么转换失败?

你的系统当前是西班牙语区域环境(从错误提示的西班牙语文字可判断),[DateTime]::ParseExact 默认使用系统当前的文化规则解析日期。虽然日期字符串里的月份缩写Oct看起来和英文一致,但西班牙语文化下的日期解析规则与英文规则存在差异,导致无法识别该格式。

修复代码

只需要在调用ParseExact时,指定使用英文通用文化规则(InvariantCulture)即可:

$certificatePath = "C:\Users\user\certificate.pem"
$opensslPath = "C:\Program Files\OpenSSL-Win64\bin\openssl.exe"

$Cert = & $opensslPath x509 -in  $certificatePath -noout -enddate
$Cert = $Cert.split("=")[1]
$Cert = $Cert.replace(" ","-")
$Cert = $Cert.replace("--","-")
$Cert = $Cert.replace("-GMT","")
# 关键修改:指定InvariantCulture作为解析规则
$CertDate = [DateTime]::ParseExact($Cert, 'MMM-d-HH:mm:ss-yyyy', [System.Globalization.CultureInfo]::InvariantCulture)
$CurrentDate = Get-Date
$DateTime = $CertDate - $CurrentDate
$Date = $DateTime.Days

额外排查点

如果修改后仍有问题,可以检查:

  • 执行$Cert = $Cert.Trim(),去除字符串开头/结尾可能存在的隐藏空白字符
  • 确认$Cert的格式完全符合MMM-d-HH:mm:ss-yyyy,d格式符兼容1位(如8)或2位(08)的日期格式

内容的提问来源于stack exchange,提问作者Sir.Mauleon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 13:45:58