6

基本的に、DSTも考慮しながら、特定のタイムゾーンの日時を他のタイムゾーンに変換する方法を見つけようとしています。例えば

たとえば、「東京標準時」で 2012 年 9 月 29 日午前 9 時である場合、「中央太平洋標準時」での時刻は?

ローカル マシンの時刻を他のタイムゾーンに変換する解決策をインターネットで見つけました。

$ToTimeZoneObj = [system.timezoneinfo]::GetSystemTimeZones() | Where-Object {$_.id -eq $ToTimeZone}
$TargetZoneTime = [system.timezoneinfo]::ConvertTime($datetime, $ToTimeZoneObj)

ローカルマシンとは異なるタイムゾーンの日時オブジェクトを作成できれば、見つけた解決策を使用できますか、それとも必要なことを行う他の方法がありますか?

ありがとう

4

2 に答える 2

11

このソリューションは私にとってはうまくいきました:

$cstzone = [System.TimeZoneInfo]::FindSystemTimeZoneById("Central Standard Time")
$csttime = [System.TimeZoneInfo]::ConvertTimeFromUtc((Get-Date).ToUniversalTime(), $cstzone)

$csttime 変数を datetime オブジェクトのように操作できます。

Get-Date $csttime.AddHours(-1) -f "MM\dd\yyyy HH:mm:ss"

参考文献: http://msdn.microsoft.com/en-us/library/system.timezoneinfo.converttimefromutc(v=vs.110).aspx http://technet.microsoft.com/en-us/library/ee692801. aspx

于 2013-11-20T16:15:58.973 に答える
1

TimeZones の操作は非常に難しい場合があります。.NET 3.5 および 4.0 に追加された更新に感謝します。私はいくつかのタイム ゾーン プロジェクトに取り組んでいましたが、2.0 では、レジストリを繰り返し使用し、独自のタイム ゾーン リストを作成しなければ、ほぼ不可能でした。

これで、TimeZoneInfo クラスを使用して TimeZones のリストを取得できます (これはよく知られているようです): http://msdn.microsoft.com/en-us/library/system.timezoneinfo.aspx

Windows Update から自動的に更新されない可能性のあるシステムは、完全に最新のシステムとはタイム ゾーンが異なる可能性があることに注意してください。Microsoft は、必要に応じてタイム ゾーンの更新をプッシュします。

あなたのコードは大丈夫だと思います。正直なところ、私は PowerShell 開発者 (私にとっては C#) にはあまり詳しくありませんが、良さそうです。

于 2012-09-29T01:18:03.527 に答える