2012-02-29 63 views
1

如果我有一個DateTime實例代表一個有效的UTC時間以及一個將該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

看起來像你想:

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

注意,我從2011年改變了一年(這是不是閏年,不會有2900天月)至2012年。

測試:

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 2012-02-29 13:19:06