我有一个这样的数据库查询:
SELECT * FROM screenings WHERE time(time)>time('now') ORDER BY time(time);
当时区设置为GMT+0:00时,它工作正常。但是,如果时区具有不同的含义(例如,GMT+6:00),则数据库查询结果分别与GMT+0:00和显示的信息不匹配。
所以,我的问题是如何在SQLite中设置本地时区?
谢谢。
不要首先存储带有时区的值。相反,将数据标准化为UTC,并在查询中一致使用UTC。
只有在为显示目的格式化数据时,才能根据用户的本地时区进行调整。
需要显示时将数据保存在UTC Timezone.
中,然后提取数据,然后转换为用户的Timezone
最好将所有时间信息记录为UTC。当您希望向用户显示时间时,您应该将其格式化,然后将其显示为用户自己的时区。
除了使用UTC时区保存所有日期外,如果对您的应用程序有意义,我还会考虑存储这些时间戳所指的时区。
存储Calendar.getTimeInMillis()
返回的UTC时间戳和时区的基本原理是,如果您存储时间戳(例如,当地时区下午3:15/UTC下午1:15),然后飞往不同的时区,然后检索时间戳,则会对您存储的下午1:15 UTC时间戳应用不同的偏移量,并且显示的结果不会是下午3:15。
我不知道这是一种常见的做法,还是一个好主意,所以我很感激一些反馈。