文档介绍:Forpersonaluseonlyinstudyandresearch;mercialuse薀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等方式写死。莅肀肁DEREK2015/12/2以下无正文仅供个人用于学****研究;不得用于商业用途。 толькодлялюдей,которыеиспользуютсядляобучения,исследованийинедолжныиспользоватьсявкоммерческихцелях. Forpersonaluseonlyinstudyandresearch;