浏览 3356 次
锁定老帖子 主题:php5和mysql5时间戳和相关设置
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-07-01
最后修改:2008-11-20
// mysql //----------------------------------------------- 目前数据库保存时间的时间戳,带有时区设置 这里(中国)就是从1970年1月1日8点开始的秒数, 数据库 select UNIX_TIMESTAMP();返回当前时间戳, 当然也可以直接把UNIX_TIMESTAMP() 插入到数据库,即保存了当前时间, select CURRENT_TIMESTAMP(UNIX_TIMESTAMP());//可以没有参数,这样就可以正确返回当前时间, 这就证明了mysql可以自圆其说 SELECT FROM_UNIXTIME(0, '%Y-%m-%d %k:%i:%s'); 结果显示1970-01-01 8:00:00 // php //----------------------------------------------- 为了迁就数据库,也使用从1970年1月1日8点开始的秒数 php5修改配置文件php.ini 大约第662行 去掉注释 date.timezone = PRC php中,也可以使用time()获得当前时间戳 经实际与mysql的select UNIX_TIMESTAMP()比较,发现实际上一样的,很方便 个人更喜欢使用数据库的UNIX_TIMESTAMP(). 然后,php在修改了配置文件后,能正确的显示时间了 经测试 getdate()函数和date()函数显示结果都正确 echo date('Y-m-d H:i:s',time()); $t = getdate(time()); echo "{$t['year']}-{$t['mon']}-{$t['mday']} {$t['hours']}:{$t['minutes']}:{$t['seconds']}" ; echo date('Y-m-d H:i:s',0); 结果显示1970-01-01 08:00:00 // javascript //----------------------------------------------- 最后是javascript var d=new Date(0); var year = d.getFullYear(); var month = (d.getMonth() + 1) ; var day = d.getDate() ; var hour = d.getHours() ; var minute = d.getMinutes(); var second = d.getSeconds() ; s = year+'-'+month+'-' +day+' '+ hour+ ':'+minute+':'+second; document.write( parseInt(d.getTime()/1000) ); document.write(s); 最终显示1970-1-1 8:0:0 // 总结 //----------------------------------------------- 尘埃落定,统一使用1970年1月1日8点开始的秒数 这也纠正了我以前一直的错误观念,从1970年1月1日0时开始的秒数 以上结果是在一台windows2003 Server版的测试结果 xieye 20080701 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |