我试图创建一个DateTime
,在PowerShell中特定的UTC时间戳对象。 什么是最简单的方法是什么?
我试过了:
Get-Date
-Format (Get-Culture).DateTimeFormat.UniversalSortableDateTimePattern
-Date "1970-01-01 00:00:00Z"
但我得到的输出:
1969-12-31 19:00:00Z
这是一个时间休息几个小时。 哪里是我的理解失误?
我试图创建一个DateTime
,在PowerShell中特定的UTC时间戳对象。 什么是最简单的方法是什么?
我试过了:
Get-Date
-Format (Get-Culture).DateTimeFormat.UniversalSortableDateTimePattern
-Date "1970-01-01 00:00:00Z"
但我得到的输出:
1969-12-31 19:00:00Z
这是一个时间休息几个小时。 哪里是我的理解失误?
该DateTime
对象本身正在用正确的UTC时间创建。 但是,当PowerShell中打印出来它把它转换成我的当地文化和时区,这样的差异。
证明:
$UtcTime = Get-Date -Date "1970-01-01 00:00:00Z"
$UtcTime.ToUniversalTime()
(get-date).ToUniversalTime().ToString("yyyyMMddTHHmmssfffffffZ")
$utctime = New-Object DateTime 1970, 1, 1, 0, 0, 0, ([DateTimeKind]::Utc)
如果你要打印出$utctime
,那么你得到:
1. januar 1970 00:00:00
此外, $utctime.Kind
正确设置为Utc
。
$time = [DateTime]::UtcNow | get-date -Format "yyyy-MM-ddTHH:mm:ssZ"
这似乎也工作
您可以使用SpecifyKind方法:
PS C:\ IT \ S3> $时间戳
周三,2018年7月18日下午7时57分14秒
PS C:\ IT \ S3> $ timestamp.kind
不明
PS C:\ IT \ S3> $ utctimestamp = [DATETIME] :: SpecifyKind($时间戳,[DateTimeKind] :: UTC)
PS C:\ IT \ S3> $ utctimestamp
周三,2018年7月18日下午7时57分14秒
PS C:\ IT \ S3> $ utctimestamp.kind
世界标准时间
这是它如何工作的.NET,对不对? PowerShell的只是调用ToUniversalTime方法。 从http://msdn.microsoft.com/en-us/library/system.datetime.touniversaltime.aspx
The Coordinated Universal Time (UTC) is equal to the local time minus the
UTC offset. For more information about the UTC offset, see TimeZone.GetUtcOffset.
The conversion also takes into account the daylight saving time rule that applies
to the time represented by the current DateTime object.