ParseExact()按此AM时间戳正常工作。然而,它在PM上失败了。
PS C:\Users\pwatson> [DateTime]::ParseExact('11/24/2017 05:12:44.123 AM', 'M/dd/yyyy HH:mm:ss.fff tt', $null)
Friday, November 24, 2017 05:12:44
PS C:\Users\pwatson> [DateTime]::ParseExact('11/24/2017 05:12:44.123 PM', 'M/dd/yyyy HH:mm:ss.fff tt', $null)
Exception calling "ParseExact" with "3" argument(s): "String was not recognized as a valid DateTime."
At line:1 char:1
+ [DateTime]::ParseExact('11/24/2017 05:12:44.123 PM', 'M/dd/yyyy HH:mm ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : FormatException
答案 0 :(得分:1)
您需要使用格式代码hh
而不是HH
。 hh
是12小时制。 HH是24小时制。它适用于上午时间,因为上午5:12是一个有效时间,但不适用于PM时间05:25 pm无效,因为05被解释为24小时时钟凌晨5点,因此与PM不兼容。
[DateTime]::ParseExact('11/24/2017 05:12:44.123 AM', 'M/dd/yyyy hh:mm:ss.fff tt', $null)
[DateTime]::ParseExact('11/24/2017 05:12:44.123 PM', 'M/dd/yyyy hh:mm:ss.fff tt', $null)
返回:
24 November 2017 05:12:44
24 November 2017 17:12:44