【问题标题】:How to parse datetime by ::parseexact in PowerShell?如何在 PowerShell 中通过 ::parseexact 解析日期时间?
【发布时间】:2018-10-17 07:17:58
【问题描述】:

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

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

这是一个错误

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

【问题讨论】:

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

标签: powershell


【解决方案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(String, String[], IFormatProvider, DateTimeStyles) 方法解析匹配任何一个日期的字符串表示 分配给格式参数的模式。如果字符串 s 不将这些模式中的任何一个与任何变体匹配 由样式参数定义,该方法会引发 FormatException。 除了将 s 与多种格式模式进行比较,而不是与 一个单一的格式化模式,这个重载的行为与 DateTime.ParseExact(String, String, IFormatProvider, DateTimeStyles) 方法。

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

请参阅Get-Date Formatting Culture 了解更多信息。

【讨论】:

  • 给定的完全指定格式(来自 OP 和您的)不需要 Globalization.CultutreInfo。这在解析外语短/长日/月名称时发挥作用,例如this question
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-07
  • 2020-11-06
  • 1970-01-01
  • 1970-01-01
  • 2014-01-29
  • 2023-03-06
相关资源
最近更新 更多