我对数据库有这样的查询:
SELECT * FROM screenings WHERE time(time)>time('now') ORDER BY time(time);
当时区设置为GMT + 0:00时,它可以正常工作。但如果时区具有不同的含义(例如,GMT + 6:00),则数据库查询结果与GMT + 0:00一致,并且显示的信息分别与当前时间不匹配。
那么,我的问题是如何在SQLite中设置本地时区?
感谢。
答案 0 :(得分:6)
首先不要将值与时区存储在一起。相反,将您的数据规范化为UTC并在查询中始终如一地使用UTC。
仅在格式化数据以进行显示时,请调整用户的本地时区。
答案 1 :(得分:3)
当您需要显示时,请在UTC Timezone.
中保存数据,然后获取数据,然后转换为用户Timezone
答案 2 :(得分:2)
将所有时间信息记录为UTC会更好。当您希望向用户显示时间时,您应该将其格式化为他们自己的时区。
答案 3 :(得分:0)
除了使用UTC时区保存所有日期之外,我还会考虑存储这些时间戳引用的时区,如果它对您的应用程序有意义的话。
存储由Calendar.getTimeInMillis()
返回的UTC时间戳和时区的基本原理是,如果存储时间戳(例如,在当地时区下午3:15 / UTC时间下午1:15),则飞行到不同的时区,然后检索时间戳,不同的偏移量将应用于您存储的下午1:15 UTC时间戳,显示的结果将不会是下午3:15。
我不知道这是通常的做法,还是一个好主意,所以我希望得到一些反馈。