什么是从PowerShell获得Unix秒的最“惯用”方式?

时间:2018-04-30 20:14:22

标签: powershell datetime unix-timestamp

我习惯使用.NET Framework DateTimeOffset来获取Unix秒。

PS> ([datetimeoffset] '2020-01-01').ToUnixTimeSeconds()
1577854800

但是,我正在编写一个PowerShell脚本,并认为我会尝试尽可能“惯用”。似乎Get-Date可以做到这一点,但结果却不同。

PS> Get-Date -Date '2020-01-01' -UFormat %s
1577836800

默认情况下,使用我的本地时区似乎Get-DateDateTime同义。我可以从Get-Date获取UTC日期的唯一方法是另一个.NET方法调用。

PS> (Get-Date -Date '2020-01-01').ToUniversalTime()

现在,为了获得Unix秒数,我可以再次管道?

PS> (Get-Date -Date '2020-01-01').ToUniversalTime() | Get-Date -UFormat %s

对于我认为简单的表达方式而言,这是一个非常多的管道......还有其他想法吗?

1 个答案:

答案 0 :(得分:0)

好的,所以,直到Get-Date知道时区或我们得到一个新的cmdlet ......似乎我们必须使用ToUniversalTime方法。这一点尤为重要,因为this bug似乎只会影响格式化Unix秒,如果你没有转换为世界时(fix is merged,但是谁知道这是什么版本。

所以,我们可以做的 best 可能是这样的:

PS> Get-Date -Date (Get-Date -Date '2020-01-01').ToUniversalTime() -UFormat %s