自从我开始使用.NET以来,我一直在使用.NET和SQL Server的DateTime数据类型来存储日期和时间数据。最近我意识到.NET和SQL Server中存在DateTimeOffset类型。
现在是否应该将DateTimeOffset类型作为我的默认数据类型来处理和存储带有时间的日期?
如果不是,那么什么情况下会使用其中一个?
现在是否应该将DateTimeOffset类型作为我的默认数据类型来处理和存储带有时间的日期?
如果不是,那么什么情况下会使用其中一个?
日期时间(DateTime)
在我的案例中,我使用DateTime是因为它更易于使用,并且自从我开始编程以来一直在使用它。
从.NET之外的来源(例如SQL数据库)检索日期和时间信息。通常,这些来源将日期和时间信息存储在与DateTime结构兼容的简单格式中。
执行日期和时间算术运算,但关注于一般结果。例如,在将六个月加到特定日期和时间的加法运算中,结果是否针对夏令时进行调整通常并不重要。
带偏移量的日期时间(DateTimeOffest)
DateTimeOffset结构表示一个日期和时间值,以及指示该值与UTC相差多少的偏移量。因此,该值始终可以明确地标识单个时间点。
DateTimeOffset类型包含了DateTime类型的所有功能以及时区感知功能。这使其适用于执行以下操作的应用程序:
唯一而明确地标识单个时间点。DateTimeOffset类型可用于明确定义“当前时间”,记录交易时间、系统或应用程序事件的时间以及记录文件创建和修改时间。
执行通用日期和时间算术运算
保留多个相关时间,只要这些时间存储为两个单独的值或结构的两个成员即可
根据您的需求使用适合您的类型。在我的案例中,我一直使用DateTime并且没有任何问题,但如果您喜欢可以使用带偏移量的OffsetDateTime。