论坛首页 编程语言技术论坛

php5和mysql5时间戳和相关设置

浏览 3356 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-07-01   最后修改:2008-11-20
PHP
php5和mysql5时间戳和相关设置

// 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




论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics