我习惯使用.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-Date
与DateTime
同义。我可以从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
对于我认为简单的表达方式而言,这是一个非常多的管道......还有其他想法吗?
答案 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