【问题标题】:Powershell simplest method to get current time expressed as UTCPowershell最简单的方法来获取以UTC表示的当前时间
【发布时间】:2015-11-27 05:01:08
【问题描述】:

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

在 PowerShell (3.0) 中返回表示“现在”为 UTC 的可排序字符串的最直接方法是什么?

我预计正确答案是:

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

 OR

get-date -format u

但事实并非如此。

示例:2016 年 9 月 1 日太平洋时区 DST 期间的 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


【解决方案1】:

大概是这样的:

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

相当于:

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

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

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

我假设您将始终需要 UTC,因为从您的问题中看起来是这样。似乎没有 format string 来获取仅包含 3 个字母的时区。

【讨论】:

    【解决方案2】:

    我试过了,它也给出了我想要的结果:

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

    它以 20180108_152407_UTC 格式显示时间 所以你基本上可以随意使用日期/时间格式

    【讨论】:

      猜你喜欢
      • 2014-04-15
      • 1970-01-01
      • 1970-01-01
      • 2013-07-20
      • 2013-05-21
      • 2011-11-26
      • 2019-06-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多