Powershell最简单的方法来获取当前时间表示为UTC

Powershell simplest method to get current time expressed as UTC

我看过post Creating a DateTime object with a specific UTC DateTime in PowerShell,但它似乎没有直接回答我要问的问题:

PowerShell (3.0) 中最直接的方法是 return 表示 "now" 为 UTC 的可排序字符串?

我预计正确答案是:

Get-Date -Format (Get-Culture).DateTimeFormat.UniversalSortableDateTimePattern 

 OR

get-date -format u

但事实并非如此

示例:2016 年 9 月 1 日太平洋时区夏令时 1300 时(下午 1 点),我收到响应:

2016-09-0113:00:00Z(当地时间加"Z")

当我期待时:

2016-09-0120:00:00Z(正确UTC/GMT时间)

所以基本上,我的代码只是获取一个表示 "local" 时间的字符串并附加一个 "Z".

现在,我知道我可以通过操作来达到这一点,但我正在寻找到达这里的最小(最简单、最干净)的方法。

奖励积分(就好像它们存在一样):如何获得相同的、可排序的结果,但以 "UTC" and/or "GMT" 作为后缀显示。相同的最低要求。

大概是这样的:

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

相当于:

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

对于奖金,我认为最直接的方法就是将Z替换为UTC:

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

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

我试过了,也是我想要的结果:

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

它以 20180108_152407_UTC 格式显示时间 所以你基本上可以随心所欲地使用 date/time 格式