如何在PowerShell中将yyyy/MM/dd/hh/mm/ss格式字符串转为DateTime对象?
解决Linux格式日期字符串转PowerShell DateTime对象的问题
你碰到的问题根源很明确——格式字符串里的小时格式符用错了!你的输入时间是14(24小时制),但你写的hh是12小时制的小时格式(范围是01-12),24小时制的小时应该用HH格式符。这就是ParseExact抛出格式错误的核心原因。
修正后的正确代码
把格式字符串里的hh改成HH,就能正常解析了:
$DateTimeObject = [datetime]::ParseExact('2018/05/21/14/08/17',"yyyy/MM/dd/HH/mm/ss",$null)
其他可行的转换方法
如果不想纠结格式符细节,还有两种更简便的方式:
方法一:直接用Get-Date命令解析
PowerShell的Get-Date命令对这种格式有很好的兼容性,不需要手动指定格式:
$DateTimeObject = Get-Date '2018/05/21/14/08/17'
方法二:替换分隔符后自动转换
把日期字符串里的/替换成PowerShell更易识别的-,再直接转换为DateTime类型:
$linuxDate = '2018/05/21/14/08/17' $DateTimeObject = [datetime]($linuxDate -replace '/', '-')
内容的提问来源于stack exchange,提问作者CrackerT
相关产品推荐
相关产品推荐

