2012-02-29 8 views
1

有効なUTC時間を表すDateTimeインスタンスと、そのDateTimeを適用するタイムゾーンに変換するオフセットがある場合、これを表すDateTimeOffsetインスタンスを作成するにはどうすればよいですか?DateTimeOffset適切な使用

var utcDateTime = new DateTime(2011, 02, 29, 12, 43, 0, /*DateTimeKind.Utc*/); 
var localOffset = TimeSpan.FromHours(2.0); 

var dto = ... 

// Here the properties should be as follows; 
// dto.UtcDateTime = 2011-02-29 12:43:00 
// dto.LocalDateTime = 2011-02-29 14:43:00 

おそらく、私はDateTimeOffset構造を正しく理解していませんが、予想される出力を得ることができません。事前

答えて

8

感謝したいように見える:私は(閏年ではなく、月に29日を持っていません)2011年から2012年まで毎年変更

var utcDateTime = new DateTime(2012, 02, 29, 12, 43, 0, DateTimeKind.Utc); 
var dto = new DateTimeOffset(utcDateTime).ToOffset(TimeSpan.FromHours(2)); 

注意を。

テスト:

Console.WriteLine("Utc = {0}, Original = {1}", dto.UtcDateTime, dto.DateTime); 

出力:

Utc = 2/29/2012 12:43:00 PM, Original = 2/29/2012 2:43:00 PM 
あなたはおそらく は、ローカルシステムのタイムゾーンのような時間での瞬間を表すことができる LocalDateTimeプロパティを、望んでいないことに注意してください。

+0

ああ、それは完璧です。そのため、DateTimeOffset(DateTime、TimeSpan)コンストラクタでは、UTC以外の日付が必要です。それは私を投げLocalDateTimeだった - DateTimeプロパティを使用してより理にかなって! ...また、2011年はタイプミスでした:Pありがとう:) – Barg