最后输出的结果如下图所示
在DateTime和DateTimeOffset之间选择
上面说了这么多关于DateTime和DateTimeOffset类型如何在DateTime和DateTimeOffset之间进行选择呢?从前面的示例中大家已经看到了DateTime只可以表示UTC或者本地时区的时间或者不确定的时区这给我们应用程序的移植带来了极大的麻烦除非你指定它表示的是UTC否则在移植应用程序时会受到诸多的限制例如下面这段最简单的代码
static void Main(string[] args)
{
DateTime date = DateTimeNow;
ConsoleWriteLine(date);
}
如果DateTime表示本地时区那么应用程序在本地时区内移植是不会有问题的但是如果你的应用程序需要对不同的时区都支持建议在使用时尽量将DateTime的Kind属性设置为Utc这一点尤其重要否则就需要考虑使用DateTimeOffset类型
与DateTime类型不同的是DateTimeOffset它唯一的标识了一个明确的时间点即时间值以及相对于UTC的偏移量它并不依赖于某个特定的时区在大多数情况下应当考虑使用DateTimeOffset来代替DateTime类型并且在SQL Server 中也已经提供了对于DateTimeOffset数据类型的支持详细信息可以参考这篇文章《SQL Server 中的新日期数据类型》
但是DateTimeOffset类型并不是完全用来代替DateTime类型在应用程序只用到日期而不涉及时间如出生日期用DateTime类型是没有任何问题的
[] [] [] [] [] [] []