【问题标题】:How does Swift manage dates in CoreDataSwift 如何管理 CoreData 中的日期
【发布时间】:2020-10-05 03:19:30
【问题描述】:

我一直在我的 CoreData 中包含一个日期,并且也很想知道底层 SQLite 数据库在幕后发生了什么。

我注意到虽然integervarchar 用于其他CoreData 属性,但CoreData Date 属性在SQLite 中显示为timestamp

现在我知道 SQLite 有它的怪癖,特别是:

  • 列具有类型关联性而不是固定类型,因此您可以将任何您喜欢的内容放在任何您喜欢的地方
  • 您可以创建自己的列类型
  • 没有不同的日期/时间类型,并且 SQLite 具有转换函数来处理日期/时间的字符串、整数或实数表示

我还注意到日期以人类可读的格式存储。但是,它似乎是一种非标准格式,而且也落后了几年。

例如:

  • SQLite 版本为1989/10/05 13:15:45
  • IS8601格式的版本是2020-10-05T14:15:45+11:00

上面的 ISO8601 导出版本是正确的。上面的 SQLite 版本取消了 31 年,忽略了我们的 DST 偏移量,并且不符合我知道的任何标准。

CoreData 如何管理日期?

【问题讨论】:

    标签: swift sqlite core-data


    【解决方案1】:

    the documentation for Swift Date。 Apple 使用的参考日期(2001 年 1 月 1 日)与 Unix(1970 年 1 月 1 日)不同,这解释了大部分(如果不是全部)差异。

    【讨论】:

    • 从那里你转到developer.apple.com/documentation/foundation/nsdate,它确实提到了你所说的。为什么苹果会走这条路?我仍然注意到他们还使用了一种非标准的日期编码方式(使用yyyy/mm/dd 而不是yyyy-mm-dd,我看不到夏令时的来源。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-08
    • 2019-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多