获取以 UTC 表示的当前时间的最简单 PowerShell 方法

问题描述 投票:0回答:3

我已经审阅了帖子在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”作为后缀显示。相同的最低要求。

powershell datetime time timezone utc
3个回答
28
投票

大概是这样的:

[DateTime]::UtcNow.ToString('u')

相当于:

[DateTime]::UtcNow.ToString((Get-Culture).DateTimeFormat.UniversalSortableDateTimePattern)

对于奖励,我认为最直接的方法就是将

Z
替换为
UTC
:

[DateTime]::UtcNow.ToString('u').Replace('Z','UTC')

我假设你总是想要 UTC,因为从你的问题来看,它看起来像这样。似乎没有格式字符串可以仅获取 3 个字母的时区。


1
投票

我尝试了这个,它也给出了我想要的结果:

"[DateTime]::UtcNow.ToString('yyyyMMdd_HHmmss_UTC')"

它以格式显示时间 20180108_152407_UTC 所以你基本上可以根据需要使用日期/时间格式


1
投票

如果您想继续使用

Get-Date
以获得更好的代码可读性...

(Get-Date).ToUniversalTime()
© www.soinside.com 2019 - 2024. All rights reserved.