如何在PowerShell中通过:: parseexact解析日期时间?

时间:2018-05-07 13:04:48

标签: powershell

我在尝试解析时遇到问题,并使用::parseexact在PowerShell中将字符串转换为[DateTime]格式。谁能告诉我哪里不好? 这是我的代码。

[datetime]::parseexact('2018-05-07T15:19:17.839+03:00','o', 'yyyy-MM-ddTHH:mm:ss.fffzzz')

这是一个错误

  

找不到“parseexact”的重载和参数count:“3”。   在行:1个字符:1   + [datetime] :: parseexact('2018-05-07T15:19:17.839 + 03:00','o','yyyy-MM- ...   + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~       + CategoryInfo:NotSpecified:(:) [],MethodException       + FullyQualifiedErrorId:MethodCountCouldNotFindBest

1 个答案:

答案 0 :(得分:1)

正如评论中所述,您可以将代码更改为[datetime]::parseexact('2018-05-07T15:19:17.839+03:00', 'yyyy-MM-ddTHH:mm:ss.fffzzz',$null),如果您不关心CultureInfo,那么这将对您有用。

但正如我在您的代码中所看到的那样,您正在为ParseExact函数提供3个参数,这让我想知道您是否真的想要更改CultureInfo。如果你想改变它,你可以做这样的事情 -

([datetime]::ParseExact($date,"dd/MM/yyyy",[Globalization.CultureInfo]::CreateSpecificCulture('en-GB'))

([datetime]::ParseExact($date,"dd/MM/yyyy",[Globalization.CultureInfo]::CreateSpecificCulture('de-DE'))

等等取决于您的要求。

额外信息 -

根据the msdn article

  

在   DateTime.ParseExact(字符串,字符串[],的IFormatProvider,DateTimeStyles)   method解析与任何一个匹配的日期的字符串表示形式   分配给formats参数的模式。如果是字符串s   与任何这些模式中的任何一个都不匹配   由styles参数定义,该方法抛出FormatException。   除了将s与多种格式化模式进行比较,而不是   一个格式化模式,这个重载行为与   DateTime.ParseExact(字符串,字符串,的IFormatProvider,DateTimeStyles)   方法

style参数是枚举值的按位组合,表示允许的s格式(输入日期)。要指定的典型值为None

有关详细信息,请参阅Get-Date Formatting Culture