【问题标题】:SQLite Net DateTimeKind is Unspecified when reading a date back from the database从数据库读取日期时未指定 SQLite Net DateTimeKind
【发布时间】:2017-11-21 14:04:25
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c# datetime sqlite-net


    【解决方案1】:

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

    【讨论】:

    • Sqlite.Net 默认存储 Datetimeoffset.Utcticks 并丢失时区信息,因此无法解决问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-19
    • 1970-01-01
    • 2020-01-31
    • 2012-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多