文档介绍:膀ecshop时间机制艿肄程序中的时间分为标准时间和显示时间,在获取时间、存储时间、调取时间时统一采用标准时间,ecshop中的标准时间是在安装过程中定义的,一旦安装成功则存储在/data/,以常量:$timezone存在。如下两图芁芈螈螄一般情况下,我们规定标准时间选用UTC,即格林尼治时间。但在显示给用户的时候,我们需要用ecshop自带的时间转换函数来转换成当地时间。下图是该函数节蚁膈薅如图可知,关于具体转换成哪个时区的时间,由SESSION[‘timezone’]和商店设置中的timezone字段值决定,因此,我们只需要在【后台-》商店设置-》基本设置】中把默认时区选择成用户所在的时区就行了。(中国建议设置成东八区,如下图)莄蝿薇芅范例:膁肂php程序中转换:羆羅膃JS中转换(此处为倒计时JS):芀蒆螆芄上图的$now_time为PHP程序传过来的当地时间,如函数onload_leftTime()中没有传参,,如传参,则读取传参时间。莈腿系统出现8小时误差的原因分析:蒆肁config文件中标准时间定义正确,为UTC时区,但用gmtime()获取,则获取的是此时的格林尼治时间,比中国晚了8小时。蚁config文件中没有定义标准时间UTC时区,而是定义了RPC时区,而程序用local_date()函数处理时间,或是把gmtime()手动增加了8小时(gmtime()$timezone定义的影响,如下三图),导致页面显示时间早了8小时。薈芆膃衿页面显示正常,,获取时也用的gmtime,这时会有隐患,如果有别的页面按ecshop的原有规则,正确调用了local_date()函数,反而时间早了8小时。羈螃总结:膄安装过程中选择UTC时区,$timezone膂存储数据库时,统一存UTC时间戳(例如用gmtime()获取)蒇前台显示时要用local_date()转换成当地时间蒃编写相关JS时,请沿用ecshop机制,不要用+86400等方式写死。羁芀袇DEREK膄2015/12/2以