PowerShell中DateTime.ParseExact解析单数字月份日期报错问题
解决PowerShell解析单月份日期字符串的问题
问题根源
[DateTime]::ParseExact是严格匹配格式的:
MMddyyyy要求两位月份+两位日期+四位年份(总长度8位)Mddyyyy要求一位月份+两位日期+四位年份(总长度7位)
如果单月份字符串是1042024(1月04日2024),理论上Mddyyyy可以匹配,但报错大概率是文化区域规则冲突,更可靠的方式是提供多格式候选让解析器尝试。
解决方案1:提供多格式候选
直接传入格式数组,覆盖双位月份和单月份的情况,解析器会自动匹配符合的格式:
# 解析单月份日期字符串 $testDateTime = [DateTime]::ParseExact("1042024", @("MMddyyyy", "Mddyyyy"), $null) # 输出结果:1/4/2024 12:00:00 AM
如果日期部分也可能是单数字(比如142024代表1月4日2024),可以再加一个格式:
$testDateTime = [DateTime]::ParseExact("142024", @("MMddyyyy", "Mddyyyy", "Mdyyyy"), $null)
解决方案2:补全前导零统一格式
先把短字符串补前导零到8位,再用MMddyyyy解析,适合确定日期部分是两位的场景:
$dateStr = "1042024" # 补前导零至8位,得到"01042024" $paddedDateStr = $dateStr.PadLeft(8, '0') $testDateTime = [DateTime]::ParseExact($paddedDateStr, "MMddyyyy", $null)
内容的提问来源于stack exchange,提问作者Pearl
相关产品推荐
相关产品推荐

