サーバーから返されたものDateTime
などの米国スタイルをユーザーの現地時間に変換するにはどうすればよいですか? 5/1/2012 3:38:27 PM
私はWindows phone用に開発しています。
私はもう試した
DateTime localTime = serverTime.ToLocalTime();
しかし、結果は数時間ずれています。ToLocalTime()
ユーザーがいるタイムゾーンへの変換を処理すると思いましたか? おそらく、最初にユーザーのタイムゾーン情報を取得する必要がありますか?
編集1
serverTime は PST タイム ゾーンにあると思います
編集2
私のタイムゾーンは GMT +8 です。以下を試してみましたが、結果としてlocalTimeが15時間遅れています。
TimeZoneInfo localZone = TimeZoneInfo.Local;
DateTime localTime = TimeZoneInfo.ConvertTime(serverTime, localZone);
編集3
これにより、現地時間から 7 時間遅れることになります。
TimeZoneInfo localZone = TimeZoneInfo.Local;
DateTime dateTimeKind = DateTime.SpecifyKind(serverTime, DateTimeKind.Utc);
DateTime localTime = TimeZoneInfo.ConvertTime(dateTimeKind, localZone);
編集4
OK、私はそこに到達していると思いますが、これがすべてのタイムゾーンに当てはまるかどうかはわかりません. その結果、現地時間は現在わずか 1 時間進んでいるため、夏時間を考慮する必要があると思います。
TimeZoneInfo localZone = TimeZoneInfo.Local;
double offset = localZone.GetUtcOffset(DateTime.Now).TotalHours;
DateTime dateTimeKind = DateTime.SpecifyKind(serverTime, DateTimeKind.Utc);
DateTime localTime = TimeZoneInfo.ConvertTime(dateTimeKind, localZone).AddHours(offset);
DLS
では、Windows Phone で特定のタイム ゾーンを有効にするにはどうすればよいでしょうか。TimeZoneInfo.FindSystemTimeZoneById
サポートされていないようですか?