Powershell 正在尝试将字符串数组转换为日期

Powershell 正在尝试将字符串数组转换为日期,powershell,datetime,date-formatting,datetime-parsing,Powershell,Datetime,Date Formatting,Datetime Parsing,我遇到了一个奇怪的问题,我试图解析以下字符串的数组,这些字符串被赋予了变量$DatesUnformatted: 2020-02-28T05:29:00Z 2020-02-28T04:52:00Z 2020-02-28T04:52:00Z 2020-02-27T17:01:00Z 2020-02-27T17:01:00Z 2020-02-27T17:01:00Z 2020-02-27T17:01:00Z …使用[DateTime]::ParseExact()转换为时间格式(hh:mm tt) 我

我遇到了一个奇怪的问题,我试图解析以下字符串的数组,这些字符串被赋予了变量
$DatesUnformatted

2020-02-28T05:29:00Z
2020-02-28T04:52:00Z
2020-02-28T04:52:00Z
2020-02-27T17:01:00Z
2020-02-27T17:01:00Z
2020-02-27T17:01:00Z
2020-02-27T17:01:00Z
…使用
[DateTime]::ParseExact()
转换为时间格式(
hh:mm tt

我的脚本如下所示:

([datetime]'2020-02-28T04:52:00Z').ToString('hh:mm tt')
foreach($DateUnformatted in$DatesUnformatted)
{
$DateFormatted=[datetime]::parseexact($DateUnformatted,'yyyy-MM-ddThh:MM:ssZ',$null)。ToString('hh:MM-tt'))
echo“将$DateUnformatted转换为$DateFormatted”
}
以下是输出:

Converting 2020-02-28T05:29:00Z to 12:29 AM
Converting 2020-02-28T04:52:00Z to 11:52 PM
Converting 2020-02-28T04:52:00Z to 11:52 PM
Converting 2020-02-27T17:01:00Z to 11:52 PM
Converting 2020-02-27T17:01:00Z to 11:52 PM
Converting 2020-02-27T17:01:00Z to 11:52 PM
Converting 2020-02-27T17:01:00Z to 11:52 PM

它似乎只是转换前几个条目,然后重复一个条目,直到循环结束。有什么想法吗?

hh
仅适用于12小时时间格式(使用AM/PM指示器),而您的输入使用24小时格式,您必须使用
hh

[datetime]::ParseExact(
  $DateUnformatted, 
  'yyyy-MM-ddTHH:mm:ssZ', # note the 'HH'
  $null
).ToString('hh:mm tt')
您的症状意味着
$ErrorActionPreference='SilentlyContinue'
已生效,否则您将看到
ParseExact()
方法触发其语句,并大声终止错误,错误消息如下:

Exception calling "ParseExact" with "3" argument(s): "String '2020-02-27T17:01:00Z' was not recognized as a valid DateTime."

无论哪种方式,最后一次成功调用的结果都会保留在变量
$DateFormatted

中。您也可以将字符串隐式转换为datatime,如下所示:

([datetime]'2020-02-28T04:52:00Z').ToString('hh:mm tt')
完整代码:

$DatesUnformatted | foreach { "Converting $_ to " + ([datetime]$_).ToString('hh:mm tt') }

看来我的评论在提交编辑后被删除了。是的,$ErrorActionPreference设置为'SilentlyContinue'是正确的。实际脚本使用API获取可能包含或不包含日期字符串的事件,因此我收到了很多错误。将stdout/stderr打印到Ansible playbook运行时不理想。再次感谢!