web-dev-qa-db-fra.com

Création d'un objet DateTime avec un DateTime UTC spécifique dans PowerShell

J'essaie de créer un objet DateTime avec un horodatage UTC spécifique dans PowerShell. Quelle est la manière la plus simple de procéder?

J'ai essayé:

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

mais j'obtiens cette sortie:

1969-12-31 19:00:00Z

C'est quelques heures de repos. Où est mon manque de compréhension?

24
M. Dudley

L'objet DateTime lui-même est en cours de création avec l'heure UTC appropriée. Mais lorsque PowerShell l'imprime, il le convertit dans ma culture locale et mon fuseau horaire, d'où la différence.

Preuve:

$UtcTime = Get-Date -Date "1970-01-01 00:00:00Z"
$UtcTime.ToUniversalTime()
30
M. Dudley
(get-date).ToUniversalTime().ToString("yyyyMMddTHHmmssfffffffZ")
16
Ryker Abel
$utctime = New-Object DateTime 1970, 1, 1, 0, 0, 0, ([DateTimeKind]::Utc)

Si vous imprimez $utctime, alors vous obtenez:

1. januar 1970 00:00:00

Aussi, $utctime.Kind est correctement défini sur Utc.

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

Cela semble également fonctionner

4
user8691702

Vous pouvez utiliser la méthode SpecifyKind:

Horodatage PS C:\IT\s3> $

Mercredi 18 juillet 2018 19:57:14

PS C:\IT\s3> $ timestamp.kind

Non spécifié

PS C:\IT\s3> $ utctimestamp = [DateTime] :: SpecifyKind ($ timestamp, [DateTimeKind] :: Utc)

PS C:\IT\s3> $ utctimestamp

Mercredi 18 juillet 2018 19:57:14

PS C:\IT\s3> $ utctimestamp.kind

UTC

1
hotch

Voilà comment cela fonctionne dans .NET, non? PowerShell appelle simplement la méthode ToUniversalTime. De 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. 
0
Shay Levy