40

DateTimePowerShellで特定のUTCタイムスタンプを持つオブジェクトを作成しようとしています。これを行う最も簡単な方法は何ですか?

私は試した:

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

しかし、私はこの出力を取得します:

1969-12-31 19:00:00Z

数時間お休みです。私の理解の誤りはどこにありますか?

4

6 に答える 6

46

DateTimeオブジェクト自体は適切なUTC時間で作成されています。しかし、PowerShellがそれを印刷すると、それが私の地域の文化とタイムゾーンに変換されるため、違いが生じます。

証拠:

$UtcTime = Get-Date -Date "1970-01-01 00:00:00Z"
$UtcTime.ToUniversalTime()
于 2012-05-07T18:20:48.100 に答える
23
(get-date).ToUniversalTime().ToString("yyyyMMddTHHmmssfffffffZ")
于 2013-09-11T19:10:29.327 に答える
14
$utctime = New-Object DateTime 1970, 1, 1, 0, 0, 0, ([DateTimeKind]::Utc)

印刷する$utctimeと、次のようになります。

1. januar 1970 00:00:00

また、$utctime.Kindに正しく設定されていUtcます。

于 2017-05-26T08:06:45.393 に答える
8
$time = [DateTime]::UtcNow | get-date -Format "yyyy-MM-ddTHH:mm:ssZ"

これも機能するようです

于 2017-09-28T18:44:44.523 に答える
3

次のSpecifyKindメソッドを使用できます。

PS C:\ IT \ s3> $ timestamp

2018年7月18日水曜日19:57:14

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

不特定

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

PS C:\ IT \ s3> $ utctimestamp

2018年7月18日水曜日19:57:14

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

UTC

于 2018-07-19T15:39:38.383 に答える
0

これが.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. 
于 2012-05-07T20:46:34.467 に答える