Creating a DateTime object with a specific UTC DateTime in PowerShell

前端 未结 6 1159
野趣味
野趣味 2021-02-02 07:23

I\'m trying to create a DateTime object with a specific UTC timestamp in PowerShell. What\'s the simplest way to do this?

I tried:

Get-Date
         


        
相关标签:
6条回答
  • 2021-02-02 07:39

    The DateTime object itself is being created with the proper UTC time. But when PowerShell prints it out it converts it to my local culture and time zone, thus the difference.

    Proof:

    $UtcTime = Get-Date -Date "1970-01-01 00:00:00Z"
    $UtcTime.ToUniversalTime()
    
    0 讨论(0)
  • 2021-02-02 07:40

    This is how it works in .NET, right? PowerShell just calls the ToUniversalTime method. From 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 讨论(0)
  • 2021-02-02 07:44
    (get-date).ToUniversalTime().ToString("yyyyMMddTHHmmssfffffffZ")
    
    0 讨论(0)
  • 2021-02-02 07:44

    You can use the SpecifyKind method:

    PS C:\IT\s3> $timestamp

    Wednesday, July 18, 2018 7:57:14 PM

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

    Unspecified

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

    PS C:\IT\s3> $utctimestamp

    Wednesday, July 18, 2018 7:57:14 PM

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

    Utc

    0 讨论(0)
  • 2021-02-02 07:47
    $utctime = New-Object DateTime 1970, 1, 1, 0, 0, 0, ([DateTimeKind]::Utc)
    

    If you print out $utctime, then you get:

    1. januar 1970 00:00:00
    

    Also, $utctime.Kind is correctly set to Utc.

    0 讨论(0)
  • 2021-02-02 07:57
    $time = [DateTime]::UtcNow | get-date -Format "yyyy-MM-ddTHH:mm:ssZ"
    

    This appears to also work

    0 讨论(0)
提交回复
热议问题