如何在SQLite中设置时区?

时间:2014-09-22 07:06:00

标签: android sqlite timezone

我对数据库有这样的查询:

SELECT * FROM screenings WHERE time(time)>time('now') ORDER BY time(time);

当时区设置为GMT + 0:00时,它可以正常工作。但如果时区具有不同的含义(例如,GMT + 6:00),则数据库查询结果与GMT + 0:00一致,并且显示的信息分别与当前时间不匹配。

那么,我的问题是如何在SQLite中设置本地时区?

感谢。

4 个答案:

答案 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。

我不知道这是通常的做法,还是一个好主意,所以我希望得到一些反馈。