2012-11-01 39 views
1

我们将每个用户的时区保存为该时区的ID。php:每次更新tzdata时,用户的时区更改

问题是,每次更新tzdata软件包时,ID都会发生变化,这会更改用户保存的时区。

确保用户保存时区始终保持一致的方式有哪些?

谢谢!

+0

确切地说,“ID”是什么意思,你能举个例子吗? –

回答

0

问题的原因是程序员认为将可用时区列表视为固定列表会更容易,并将用户自己的时区存储为列表中的时区位置。

即,如果欧洲/柏林曾经在时区列表中的位置100处,那么这是在DB中为用户存储的数字。但是如果软件包tzdata更新了新的时区,那么在100的位置你会罚款欧洲/贝尔格莱德,并且用户实际上会为他们定义错误的时区。

解决方案是将所有存储的旧ID号转换为显示为时区的相关的真实字符串。这样,当下一次更新tzdata时,用户将保留其当前时区。