storeDateTimeAsTicks是最近SQLite Net实现中的默认行为,与存储为字符串相比,它还具有性能优势。
不幸的是,当将DateTime刻度保存到数据库时,它会忽略时区,当从数据库中读回DateTime时,它会使用刻度来初始化DateTime对象,而将对象的DateTimeKind保留为未指定。
鉴于DateTime的工作方式,这意味着要从数据库中获取DateTimeKind.Local的DateTime,您需要在保存到数据库之前转换为UTC,并在从数据库读取后转换为本地时间。
有没有办法让SQLite Net自己处理往返? 我想避免在序列化和反序列化期间对对象进行预处理和后处理。
答案 0 :(得分:0)
解决方案是使用DateTimeOffset而不是DateTime。 使用DateTimeOffset存储时间和时区,您可以根据需要使用LocalDateTime和UtcDateTime属性。