PowerShell中将'Jul 29th, 2021'格式日期字符串转换为datetime的方法
错误原因
直接使用[datetime]强转失败的核心原因是默认解析规则无法识别日期数字后的序数后缀(st/nd/rd/th),如果操作系统默认区域不是英语地区,还会额外出现英文月份缩写无法识别的问题。
方案1:正则清理后缀后转换(通用性最高,最简洁)
通过正则批量移除所有日期数字后的序数后缀,再做日期转换,适配所有带序数后缀的日期格式:
$date = "Jul 29th, 2021" # 替换掉数字后的st/nd/rd/th后缀,保留原始日期数字 $cleanDate = $date -replace '(\d+)(st|nd|rd|th)', '$1' $testConversion = [datetime]$cleanDate # 输出结果验证:2021年7月29日 0:00:00 $testConversion
方案2:指定英文区域解析(跨区域兼容)
如果你的操作系统默认区域不是英语地区,英文月份缩写无法被正常识别,可以额外指定英文文化参数做解析:
$date = "Jul 29th, 2021" $cleanDate = $date -replace '(\d+)(st|nd|rd|th)', '$1' # 指定英文美国区域做解析,适配英文月份缩写 $enCulture = [System.Globalization.CultureInfo]::GetCultureInfo('en-US') $testConversion = [datetime]::Parse($cleanDate, $enCulture) $testConversion
内容的提问来源于stack exchange,提问作者DrJekyll_XYZ
相关产品推荐
相关产品推荐

