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

时间:2015-09-01 20:33:31

标签: powershell datetime time timezone utc

我已查看帖子Creating a DateTime object with a specific UTC DateTime in PowerShell,但它似乎没有直接回答我提出的问题:

PowerShell(3.0)中最直接的方法是返回一个表示" now"的可排序字符串。作为UTC?

我希望正确的答案是:

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

 OR

get-date -format u

但事实并非如此。

示例:2016年9月1日13点(下午1点)在DST期间的太平洋时区,我收到了回复:

2016-09-01 13:00:00Z(当地时间为" Z"附加)

我期待的时候:

2016-09-01 20:00:00Z(正确的UTC / GMT时间)

所以基本上,我的代码只是得到一个表示" local"的字符串。时间和附加" Z"。

现在,我知道我可以操纵到达那一点,但我正在寻找最小(最简单,最干净)的方式来到这里。

奖励积分(好像它们已存在):我如何获得相同的可排序结果,但显示为" UTC"和/或" GMT"作为后缀。相同的最低要求。

2 个答案:

答案 0 :(得分:19)

可能是这样的:

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

相当于:

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

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

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

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

答案 1 :(得分:-1)

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

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

它以 20180108_152407_UTC 格式显示时间 这样您就可以按照自己的意愿使用日期/时间格式