Создание объекта 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
Это несколько часов. Где мой провал в понимании?
Ответы
Ответ 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"
Это также работает