从数据库中读取日期时,SQLite Net DateTimeKind未指定

时间:2017-11-21 14:04:26

标签: c# datetime sqlite-net

storeDateTimeAsTicks是最近SQLite Net实现中的默认行为,与存储为字符串相比,它还具有性能优势。

不幸的是,当将DateTime刻度保存到数据库时,它会忽略时区,当从数据库中读回DateTime时,它会使用刻度来初始化DateTime对象,而将对象的DateTimeKind保留为未指定。

鉴于DateTime的工作方式,这意味着要从数据库中获取DateTimeKind.Local的DateTime,您需要在保存到数据库之前转换为UTC,并在从数据库读取后转换为本地时间。

有没有办法让SQLite Net自己处理往返? 我想避免在序列化和反序列化期间对对象进行预处理和后处理。

1 个答案:

答案 0 :(得分:0)

解决方案是使用DateTimeOffset而不是DateTime。 使用DateTimeOffset存储时间和时区,您可以根据需要使用LocalDateTime和UtcDateTime属性。