如何从GMT转换为本地用户';s时间[DST all calculated]以PHP表示[如果我所拥有的是以小时为单位的GMT的偏移量]?

如何从GMT转换为本地用户';s时间[DST all calculated]以PHP表示[如果我所拥有的是以小时为单位的GMT的偏移量]?,php,mysql,codeigniter,dst,Php,Mysql,Codeigniter,Dst,我使用Codeigniter的date助手获取用户的时区偏移量,[通过将其存储在mysql的数据库中] 无论如何,我真正拥有的只是偏移量,因为[数据库中]存储的信息是为CodeIgniter定制的。例如UM7等于GMT的-7偏移量 我通过使用时区($this->session->userdata('timezone'))获得偏移量,它会吐出-7[或其他任何东西,取决于数据库存储的内容。] 无论如何,如何将PHP自己的date\u default\u timezone\u set()设置为用户的本

我使用Codeigniter的date助手获取用户的时区偏移量,[通过将其存储在mysql的数据库中]

无论如何,我真正拥有的只是偏移量,因为[数据库中]存储的信息是为CodeIgniter定制的。例如UM7等于GMT的-7偏移量

我通过使用
时区($this->session->userdata('timezone'))
获得偏移量,它会吐出
-7
[或其他任何东西,取决于数据库存储的内容。]

无论如何,如何将PHP自己的
date\u default\u timezone\u set()
设置为用户的本地时间? 我不能在里面输入数字,因为我相信这个函数只允许字符串,比如
“America/Phoenix”
或者类似的东西。我只有补偿

更复杂的是,PHP会自动检测DST并相应地改变吗?[因为美国的一些州,如亚利桑那州,不参与DST]
谢谢

TZ偏移不能帮助您处理局部差异,例如亚利桑那州。这就是为什么有
America/Phoenix
区域,可以让您查找这些局部差异。如果你只有GMT-7,就不可能确定这到底是MST还是PDT——两者都是-7是的,你可以输入数字
Etc/GMT-7
。但是马克的方法更受欢迎。哦,我明白了。所以我可能应该重做注册表单,这样它就可以存储单个区域,而不是在DB中存储偏移量。或者通过匹配计算机的时间与服务器中的时间来检测DST?[我相信vBulletin会这样做]如果它们不匹配,则相应地更改DST设置?可能会重复