从这个帖子得到答案之后,如果有任何读者可以参考它,它将为我节省很多时间:link text 我发现我需要根据user_timezone列中已存在的内容更新(在mysql数据库中)一个时区代码,单独(例如10 +,1-等)到olsen代码(例如“Europe / London”等) 。什么是最容易做到的?
任何想法都会非常感激。
答案 0 :(得分:1)
很遗憾,您无法知道用户所处的区域是否属于UTC偏移量。如果您查看 Wikipedia's list of timezones,您会注意到许多区域共享相同的时间偏移,例如欧洲/萨拉热窝和欧洲/布鲁塞尔
答案 1 :(得分:1)
鉴于时区偏移(例如UTC + 2)可能对应于Olson数据库中的许多条目(例如欧洲/索菲亚,欧洲/里加,非洲/开罗等),您必须事先选择偏移到 - 奥尔森码对应。 创建一个描述这些对应关系的表,然后使用它来构建更新语句。
答案 2 :(得分:0)
您可以使用DateTimeZone课程,但获得的不是小时数,而是分钟数(IIRC)。
答案 3 :(得分:0)
在mysql中重映射值的方法如下:
UPDATE `sometable`
SET `somecolumn` = IFNULL(ELT(FIELD(`somecolumn`,
'oldval1', 'oldval2', 'oldval3'),
'newval1', 'newval2', 'newval3'),
`somecolumn`
);
这会将'oldval1'的出现更改为'newval1'等等,而只留下'oldval'列表中没有出现的任何内容。