任何人都能解释System之间的区别吗。日期时间和系统。C#中的DateTimeOffset。NET?哪个最适合与来自不同时区的用户一起构建web应用程序?
DateTime值定义特定的日期和时间,它包括一个Kind属性,该属性提供有关该日期和时间所属时区的有限信息。
DateTimeOffset结构表示日期和时间值,以及指示该值与UTC相差多少的偏移量。因此,该值总是明确地标识单个时间点。
DateTimeOffset应被视为应用程序开发的默认日期和时间类型,因为DateTimeOffsets值的使用比DateTime值的使用要常见得多。
查看更多信息,代码示例:http://msdn.microsoft.com/en-us/library/bb384267.aspx
这里有几个要点:
DateTime信息应以UTC格式存储在您的数据库中:
https://web.archive.org/web/20201202215446/http://www.4guysfromrolla.com/articles/081507-1.aspx
当您在Web应用程序中使用DateTime信息时,您需要将其转换为LocalTime:
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;
这里,dtoNow将等于dtoUTCNow,即使其中一个已初始化为DateTimeOffset。现在,另一个初始化为DateTimeOffset。UTCNow;
因此,DatetimeOffset适合存储UTC的差值或偏移量。
有关更多详细信息,请参阅MSDN。