近日搞一个B/S项目,前端页面时间字段总是显示格林威冶时间,也就是0时区的时间,比北京时间差了8个小时。打开后台的数据库,在workbench中查询,结果显示的时间格式正常,为当前北京时间。该时间字段是在往数据库中写入记录时由数据库按默认值:CURRENT-TIMESTAMP生成的,如果查找问题,应该从这里开始追踪。
1、通过百度知道mysql可以对自身时区加以设定,查询当前时区的命令是:show variables like '%time%',输入该命令后得到下面的结果:
这个结果表示mysql时区设置是东八区也就是北京时间,而系统时区是CST即中央标准时间。这里没有问题。
有的朋友的机器可能查询到time_zone的结果是system,可以通过修改my.cnf(MAC)或my.ini(windows),具体方法可以百度,这里就不再细说了。
2、数据源没有问题,那下一步查后端获取数据的过程。后端和数据库打交道的是mysql系统模块,通过查询发现这一模块可以对获取到的时间数据进行时区转化,在联接数据库时把“timezone”字段设为“local”、“dateStrings”设为“DATE”即可。
问题得以解决。