我有以下代码:
$timeinfo = '01 January 2015 15:05:00'
$template = 'dd MMMM yyyy HH:mm:ss'
[DateTime]::ParseExact($timeinfo,$template,$null)
当我运行它时,我得到以下异常:
Exception calling "ParseExact" with "3" argument(s): "String was not recognized as a valid DateTime."
At DataBase.ps1:34 char:23
+ [DateTime]::ParseExact <<<< ($timeinfo,$template,$null)
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException
字符串格式似乎对我来说是正确的,问题是什么?为什么呢?
答案 0 :(得分:2)
您正在传递一个月名January
作为要解析的字符串的一部分。如果您没有传递文化以便能够将该名称解析为月份编号,那么将使用当前正在执行的线程的文化。如果不是英语,则解析将失败。为了确保不会发生这种情况,因为不保证线程的文化(除非你之前明确地设置它),你应该传递一个文化格式提供者。
$formatProvider = [System.Globalization.CultureInfo]::GetCulture('en-US')
[DateTime]::ParseExact($timeinfo, $template, $formatProvider)
答案 1 :(得分:0)
您可以使用以下命令将 字符串简单地转换为日期时间:
[datetime]$timeinfo