我已经审阅了帖子在PowerShell中创建具有特定UTC日期时间的DateTime对象,但它似乎没有直接回答我要问的问题:
PowerShell(3.0)中返回表示“now”为 UTC 的可排序字符串的最直接方法是什么?
我预计正确答案是:
Get-Date -Format (Get-Culture).DateTimeFormat.UniversalSortableDateTimePattern
或
Get-Date -Format u
但事实并非如此。
示例:太平洋时区 DST 期间 2016 年 9 月 1 日 1300 点(下午 1 点),我收到回复:
2016-09-01 13:00:00Z
(附加 "Z"
的当地时间)
当我期待的时候:
2016-09-01 20:00:00Z
(正确的 UTC/GMT 时间)
所以基本上,我的代码只是获取一个表示“本地”时间的字符串并附加一个
"Z"
。
现在,我知道我可以通过操纵来达到这一点,但我正在寻找到达这里的最小(最简单、最干净)的方法。
奖励积分(就好像它们存在一样):如何获得相同的可排序结果,但以“UTC”和/或“GMT”作为后缀显示。相同的最低要求。
大概是这样的:
[DateTime]::UtcNow.ToString('u')
相当于:
[DateTime]::UtcNow.ToString((Get-Culture).DateTimeFormat.UniversalSortableDateTimePattern)
对于奖励,我认为最直接的方法就是将
Z
替换为 UTC
:
[DateTime]::UtcNow.ToString('u').Replace('Z','UTC')
我假设你总是想要 UTC,因为从你的问题来看,它看起来像这样。似乎没有格式字符串可以仅获取 3 个字母的时区。
我尝试了这个,它也给出了我想要的结果:
"[DateTime]::UtcNow.ToString('yyyyMMdd_HHmmss_UTC')"
它以格式显示时间 20180108_152407_UTC 所以你基本上可以根据需要使用日期/时间格式
如果您想继续使用
Get-Date
以获得更好的代码可读性...
(Get-Date).ToUniversalTime()