创建具有特定日期时间UTC在PowerShell中DateTime对象(Creating a Dat

2019-07-29 07:21发布

我试图创建一个DateTime ,在PowerShell中特定的UTC时间戳对象。 什么是最简单的方法是什么?

我试过了:

Get-Date
    -Format (Get-Culture).DateTimeFormat.UniversalSortableDateTimePattern
    -Date "1970-01-01 00:00:00Z"

但我得到的输出:

1969-12-31 19:00:00Z

这是一个时间休息几个小时。 哪里是我的理解失误?

Answer 1:

DateTime对象本身正在用正确的UTC时间创建。 但是,当PowerShell中打印出来它把它转换成我的当地文化和时区,这样的差异。

证明:

$UtcTime = Get-Date -Date "1970-01-01 00:00:00Z"
$UtcTime.ToUniversalTime()


Answer 2:

(get-date).ToUniversalTime().ToString("yyyyMMddTHHmmssfffffffZ")


Answer 3:

$utctime = New-Object DateTime 1970, 1, 1, 0, 0, 0, ([DateTimeKind]::Utc)

如果你要打印出$utctime ,那么你得到:

1. januar 1970 00:00:00

此外, $utctime.Kind正确设置为Utc



Answer 4:

$time = [DateTime]::UtcNow | get-date -Format "yyyy-MM-ddTHH:mm:ssZ"

这似乎也工作



Answer 5:

您可以使用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

世界标准时间



Answer 6:

这是它如何工作的.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. 


文章来源: Creating a DateTime object with a specific UTC DateTime in PowerShell