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