Подтвердить что ты не робот

Создание объекта DateTime с определенным временем UTC DateTime в PowerShell

Я пытаюсь создать объект DateTime со специальной меткой времени UTC в PowerShell. Какой самый простой способ сделать это?

Я пробовал:

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

но я получаю этот вывод:

1969-12-31 19:00:00Z

Это несколько часов. Где мой провал в понимании?

4b9b3361

Ответ 1

Сам объект DateTime создается с правильным временем UTC. Но когда PowerShell распечатывает его, он преобразует его в мою локальную культуру и часовой пояс, поэтому разница.

Доказательство:

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

Ответ 2

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

Ответ 3

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

Если вы распечатаете $utctime, вы получите:

1. januar 1970 00:00:00

Кроме того, $utctime.Kind правильно установлен на Utc.

Ответ 4

Вот как это работает в .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. 

Ответ 5

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

Это также работает