我正在使用Unix时间戳来保存日期/时间信息的现有网站(在MySQL中作为INT UNSIGNED
列)。
如果用户随时输入2017年3月26日的日期(英国夏令时开始时,英国时钟前进一小时),则将其保存到数据库中,然后使用{{1显示的时间比用户输入的时间大1小时。例如,显示时保存的date
变为2017-03-26 20:00:00
。但是,这仅发生在2017年3月26日 - 显示与用户输入相同的时间之前和之后的日期。
我能理解3月26日之后是否每天都会发生这种情况,但我不知道为什么它只会在某一天发生。该网站去年在英国夏令时的开始或结束时都没有出现这个问题。
默认时区在每个页面上都包含的文件中设置为欧洲/伦敦(使用2017-03-26 21:00:00
),date_default_timezone_set('Europe/London');
也会将欧洲/伦敦显示为默认时区。
服务器时间正确,phpinfo
命令给我:date
。
服务器最近已经升级,导致从PHP 5.3.x到5.6.x的版本崩溃,所以这是我能想到的唯一可能导致此问题的原因。
除了使用DATETIME字段(长期目标,但不能在几天内完成)或者如果日期为26/03时从时间戳减去3600秒,我有什么办法可以解决这个问题2017年(变得非常混乱,并且有太多地方使用时间戳来实现)。