Mat*_*tyS 2 powershell datetime
我有以下数据,它是一个名为 $timestamps 的对象类型变量
Sat Jan 15 16:21:24
Sat Jan 15 01:31:22
Fri Jan 14 20:58:09
Fri Jan 14 20:51:02
Run Code Online (Sandbox Code Playgroud)
由于奇怪的日期格式,我在将其转换为 Datetime 对象时遇到问题。你会怎么处理这个?
我希望它作为日期时间对象,因为我计划从当前 (UTC) 转换为 EST。
TIA
您可以使用ParseExact()该类提供的方法来执行[datetime]此操作:
[datetime]::ParseExact('Fri Jan 14 20:58:09','ddd MMM dd HH:mm:ss',$null)
# returns a - datetime - object of:
# Friday, January 14, 2022 8:58:09 PM
Run Code Online (Sandbox Code Playgroud)
编辑:根据mklement0的建议,我们可以使用特定于英语[cultureinfo]::InvariantCulture日期时间格式的解析。此外,将dd更改为d作为更强大的解决方案,适用于没有 2 位数字的日子;其中应涵盖单数和两位数天数。
看到$timestamps是一个字符串数组,您可以使用循环(您选择的 - 在本例中为cmdlet )来迭代每个字符串,解析文本以返回一个对象:Foreach-Objectdatetime
$timestamps | ForEach-Object {
$culture = [cultureinfo]::InvariantCulture
$format = 'ddd MMM d HH:mm:ss'
$date = [datetime]::ParseExact($_,$format,$culture,'AssumeUniversal, AdjustToUniversal')
[System.TimeZoneInfo]::ConvertTimeBySystemTimeZoneId($date, 'Eastern Standard Time')
}
Run Code Online (Sandbox Code Playgroud)
'AssumeUniversal, AdjustToUniversal'可确保 UTC 输出。假设根据您的评论,您想要转换为东部时间,将新创建的日期时间对象传递给[System.TimeZoneInfo]::ConvertTimeBySystemTimeZoneId()所需时区的参数,您可以在新时区中获得结果。
使用 时$null,将使用与当前区域性相对应的CultureInfo对象。
| 归档时间: |
|
| 查看次数: |
404 次 |
| 最近记录: |