DateTimeOffset正确用法

Bar*_*arg 2 .net c# timezone datetime datetimeoffset

如果我有一个表示有效UTC时间的DateTime实例,以及将该DateTime转换为适用它的时区的偏移量,我该如何构造一个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
Run Code Online (Sandbox Code Playgroud)

也许我没有正确理解DateTimeOffset结构,但我无法获得预期的输出.

提前致谢

Ani*_*Ani 9

看起来你想要:

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

请注意,我将年份从2011年(不是闰年,2月份没有29天)改为2012年.

测试:

Console.WriteLine("Utc = {0}, Original = {1}", dto.UtcDateTime, dto.DateTime);
Run Code Online (Sandbox Code Playgroud)

输出:

Utc = 2/29/2012 12:43:00 PM, Original = 2/29/2012 2:43:00 PM
Run Code Online (Sandbox Code Playgroud)

请注意,您可能不需要LocalDateTime属性,该属性可能代表本地系统时区的即时时间.