将字符串转换为 PowerShell DateTime

4
我有一个字符串:"02-06-2018 16:25:28",我需要将其转换为DateTime对象。我尝试了以下方法:
[DateTime]::ParseExact('02-06-2018 16:25:28', 'dd-MM-yyyy hh:mm:ss', $null)

但它没有起作用:

字符串无法识别为有效的 DateTime。

除了 [DateTime]::ParseExact 之外,是否有其他支持解析这种格式的函数 dd-MM-yyyy hh:mm:ss

我使用的是 PowerShell v5.1。

2个回答

9

如果您需要一个24小时制的时钟,可以使用HH。而12小时制的时钟则需要使用hh,但它不支持16小时制。此外,我建议使用InvariantCulture而不是$null,因为后者有时可能无法正常工作。

$culture = [Globalization.CultureInfo]::InvariantCulture
[DateTime]::ParseExact('02-06-2018 16:25:28', 'MM-dd-yyyy HH:mm:ss', $culture)

1
啊,就是这样。非常感谢。(顺便说一下,编辑你的答案,代码中写的是'hh'而不是'HH')。 - RonaDona
@RonaDona 嗯,谢谢你提醒。顺便说一下,你的时间戳示例看起来像是今天的。如果是这样的话,你还需要将“dd-MM-yyyy”更改为“MM-dd-yyyy”。 - Ansgar Wiechers

2
你可以传递日期/时间字符串给Get-Date,它会为你进行转换:get-date "02-06-2018 16:25:28"。这将返回一个System.DateTime对象,可以像平常在powershell中一样操作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接