[TIPS] TimeZoneInfo
さて、米国での今年のサマータイムが終わったようです。(今知った)
州によって使われてなかったり、2007年の改定で期間が変わったり
ややこしいねん
リニアに流れるシンプルな時間の概念をねじ曲げる制度だと思います。
日本でのサマータイム制導入には反対の気持ちです。
(ちなみに同様の理由で日本の和暦も嫌いです。)
まぁ、それはそうとして、導入されてる国の時刻を日本時刻(JST)に変換する必要がある場合にはどうするのが適当なのでしょうか・・。
つーことで.NETFrameworkでのタイムゾーンの扱いをお勉強してみます。
.NET2.0以前と.NET3.5では推奨される手順が異なるようですね。どうやら度重なる制度改定に柔軟に対応するためにTimeZoneクラスが改良されTimeZoneInfoとなったようです。
ここでは.NET3.5のTimeZoneInfoを使ってみます。
まずはタイムゾーンの一覧で使いたい地域を確認
For Each tzItem As TimeZoneInfo In TimeZoneInfo.GetSystemTimeZones
Debug.WriteLine(tzItem.Id & vbTab & tzItem.DisplayName)
Next
アメリカ東部標準時間(EST)→日本時間(JST)への変換
Private Function ESTtoJST(ByVal d As Date) As Date
Dim EST As TimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById(“Eastern Standard Time”)
Dim JST As TimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById(“Tokyo Standard Time”)
Return TimeZoneInfo.ConvertTime(d, EST, JST)
End Function
思ったより簡単にできましたね。でも、この仕様になるまで紆余曲折を思うと頭の下がる思いですね。過去にこんな記事もあったみたい。↓
ディベロッパー製品開発統括部 Blog
日本における時差のシナリオに関してご意見をお聞かせください
http://www.exconn.net/Blogs/team01/archive/2006/07/21/15292.aspx