有人能解释一下C#.NET中System.DateTime和System.DateTimeOffset的区别吗?哪一个更适合用于构建涉及来自不同时区用户的Web应用程序呢?
有人能解释一下C#.NET中System.DateTime和System.DateTimeOffset的区别吗?哪一个更适合用于构建涉及来自不同时区用户的Web应用程序呢?
DateTime是一种日期和时间值,它包含一个Kind属性,提供了有关该日期和时间所属时区的有限信息。
DateTimeOffset结构表示一个日期和时间值,以及一个偏移量,指示该值与UTC相差多少。因此,该值始终可以明确地标识单个时间点。
在应用程序开发中,应将DateTimeOffset视为默认的日期和时间类型,因为使用DateTimeOffset值的情况比使用DateTime值的情况要常见得多。
了解更多信息、代码示例,请参阅: http://msdn.microsoft.com/en-us/library/bb384267.aspx
DateTime.UtcNow.ToLocalTime();
将把它从Web服务器的角度转换为本地时间。
如果您在一个位置拥有Web服务器,为多个国家/地区的客户提供服务,则需要在客户端上使用JavaScript执行此操作:
myUTCDate.toLocaleTimeString();
http://www.java2s.com/Code/JavaScript/Date-Time/ConvertDatetoLocaleString.htm
DateTimeOffset代表了UTC日期时间。
因此,
DateTimeOffset dtoNow = DateTimeOffset.Now;
与
是相同的。DateTimeOffset dtoUTCNow = DateTimeOffset.UTCNow;
即使一个被初始化为DateTimeOffset.Now,另一个被初始化为DateTimeOffset.UTCNow,dtoNow将等于dtoUTCNow;
因此,DateTimeOffset非常适合存储与UTC的差异或偏移量。
有关更多详细信息,请参见MSDN。