ParseExact,无法识别字符串

时间:2017-05-17 18:46:01

标签: .net powershell

我有以下代码:

$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

字符串格式似乎对我来说是正确的,问题是什么?为什么呢?

2 个答案:

答案 0 :(得分:2)

您正在传递一个月名January作为要解析的字符串的一部分。如果您没有传递文化以便能够将该名称解析为月份编号,那么将使用当前正在执行的线程的文化。如果不是英语,则解析将失败。为了确保不会发生这种情况,因为不保证线程的文化(除非你之前明确地设置它),你应该传递一个文化格式提供者。

$formatProvider = [System.Globalization.CultureInfo]::GetCulture('en-US')
[DateTime]::ParseExact($timeinfo, $template, $formatProvider)

答案 1 :(得分:0)

您可以使用以下命令将 字符串简单地转换为日期时间:

[datetime]$timeinfo