我用谷歌搜索,什么都没发现,所以我想我会在这里问我有代码,允许用户手动启用或禁用夏令时。默认情况下,该问题不会运行夏令时,因为我的代码会在通过用户打开夏令时自动添加额外的小时,如果禁用则需要一小时。
谢谢!
答案 0 :(得分:1)
您无需重新发明轮子。只需使用PHP的内置日期函数!
对于每个用户,将他们的首选时区存储在数据库中,作为字符串(或唯一映射到一组字符串的id)。例如,"欧洲/伦敦"或"美国/蒙特利尔"。有关完整列表,请参阅http://php.net/manual/en/timezones.php。
当您加载用户的个人资料时,还要加载他/她的时区,并在每次格式化日期时相应地使用它(使用DateTime&#39方法时使用DateTimeZone类,或者设置它全局用于date_default_timezone_set()}的脚本。
通过这种方式,DST会针对该特定区域自动启用/禁用(请记住,DST在世界各地的不同日期开始和结束,并且许多区域不实现它)。作为一种选择,如果用户不希望自动更改DST,他/她可以选择" generic"时区,如" Etc / GMT"," Etc / GMT + 2"等(见http://php.net/manual/en/timezones.others.php)