2013-03-28 3 views
6

タイムゾーン付きのdatetime値を文字列として受け入れるプロセスがあります(データは外部システムからのものです)。この日時を、ローカルマシンのタイムゾーンでの時刻に変換する必要があります。夏時間のある別のタイムゾーンからの変換時間が含まれています。

コード例:時間ではなく、CETのCEST(中央ヨーロッパ夏時間)(中央ヨーロッパ時間)であるか、TimeZoneInfoオブジェクトは、そのシナリオを扱う.NETない場合

string cetId = "Central European Standard Time"; 
if (timeZone == "CET") 
{ 
    TimeZoneInfo cetZone = TimeZoneInfo.FindSystemTimeZoneById(cetId); 
    returnDateTime = TimeZoneInfo.ConvertTime(statusDateTime, cetZone, TimeZoneInfo.Local); 
} 
else if (timeZone == "CEST") 
{ 
    TimeZoneInfo cestZone = TimeZoneInfo.FindSystemTimeZoneById(cetId); 
    returnDateTime = TimeZoneInfo.ConvertTime(statusDateTime, cestZone, TimeZoneInfo.Local); 
} 

は、私は特定の何かをする必要がありますか?

答えて

1

あなたは大丈夫でしょう。

ConvertTimeに、両方のタイムゾーン(ソースとターゲット)が何であるかを伝えています。

これに特定の問題がありますか、または確認のみを求めていますか?

+0

:それも有用/共通/夏時間名と略語を得るのうち、面倒な作業を少し取ります私は時が適切に翻訳されないことを心配していた – Tadhg

0

The value of the Kind property of the dateTime parameter must correspond to the sourceTimeZone parameter, as the following table shows. 

TimeZoneInfo.ConvertTime()からちょうどあなたがあなたのStatusDateTimeの「種類」プロパティに注意する必要があることを追加します。あなたの場合、それは '指定されていない'ことがあります。 「備考」欄

0

をチェックアウト、私は変換のこれらの種類をカプセル化するために、しばらく前にライブラリを作成しました:

https://github.com/b9chris/TimeZoneInfoLib.Net/blob/master/TimeZoneInfoLib/TimeZone/UtcTimeZone.cs

はあなたに役に立つかもしれない、またはあなただけにそれを超える選択することもできますコードを再確認してください。それがカプセル化するものの1つは@ Brianの警告です - .Kindプロパティに関連する明示的なメソッド名を持ち、.Kindが間違っていると便利な例外をスローします。私は、夏時間はタイムゾーンとに応じて、異なる日付にで蹴ることだけ心配だった

https://github.com/b9chris/TimeZoneInfoLib.Net/blob/master/TimeZoneInfoLib/TimeZone/TimeZoneShortNameMap.cs

関連する問題