それを、現地時間に変換したいです。
例えば、ニューヨークの人がログインした時、
.NETの関数か何かで、変換したい時刻と、地名を引数として、
その地の時間(サマータイムも加味)が持ってこれるというのがあれば、
実現できると思うのですが、そんな関数あるのでしょうか・・・。
こんにちは、stepwgn24zさん。
.NETの関数には用意されていないので、自分で作る必要があります。
Time Zoneツールで時差を手早く計算する
http://www.atmarkit.co.jp/fwin2k/win2ktips/794timezone/timezone....
自分で関数を用意する必要があります。
Windowsをインストールするときにタイムゾーンを指定しますよね。
世界各地のタイムゾーン情報そのものはデータとして保持されており、「コンピュータ上に存在するタイム ゾーンを列挙する方法」によって取り出すことができます。
このデータを使って計算すればいいでしょう。
.NET 3.5以降では、System.TimeZoneInfoオブジェクトを使って変換することができます。
TimeZoneInfo.FindSystemTimeZoneByIdメソッドで、変換元(日本)と、変換先(現地)のタイムゾーンを取得した上で、ConvertTime メソッド (DateTime, TimeZoneInfo, TimeZoneInfo)を使うことでタイムゾーン変換を行うことができます。
TimeZoneInfo.FindSystemTimeZoneByIdメソッドは、地名を含む厳密なタイムゾーン名しか受け付けませんので、地名から緩くタイムゾーンを検索する場合は解説にあるようにGetSystemTimeZonesですべてのタイムゾーンのコレクションを取得して、この中から地名を含むタイムゾーンを探す必要があります。
コメント(0件)