1.首先是时间戳转化为正常时间
用到php的date()函数
date() 函数格式化一个本地时间/日期。
语法:
date(format,timestamp)
例子:
将 1381395067转化为2013-10-10
echo date("Y-m-d","1381395117");
输出:2013-10-10
注:1381395117这个就是时间戳,php中用time()和mktime()函数可以生成。
2.正常日期转化为时间戳
用到PHP中的mktime()函数
mktime() 函数返回一个日期的 Unix 时间戳。
参数总是表示 GMT 日期,因此is_dst对结果没有影响。
参数可以从右到左依次空着,空着的参数会被设为相应的当前 GMT 值。
mktime(hour,minute,second,month,day,year,is_dst)
注:如果时间在日光节约时间(DST)期间,则设置为1,否则设置为0,若未知,则设置为-1。 自 5.1.0 起,is_dst 参数被废弃。因此应该使用新的时区处理特性。
例子:
echo(date("M-d-Y",mktime(0,0,0,1,1,2013)))."
";
echo mktime(0,0,0,1,1,2013)."
";
输出:
Jan-01-2013
1356998400
已经知道一个日期字符串转化为时间戳:
$year=((int)substr("2013-10-10",0,4));//取得年份
$month=((int)substr("2013-10-10",5,2));//取得月份
$day=((int)substr("2013-10-10",8,2));//取得几号
echo mktime(0,0,0,$month,$day,$year);
输出:
1228348800
注:
php5.1以上时间戳会与实际时间相差8小时,解决办法如下
1、最简单的方法就是不要用php5.1以上的版本--显然这是不可取的方法!!!
2、修改php.ini。打开php.ini查找date.timezone 去掉前面的分号= 后面加Asia/Shanghai,重启apache服 务器即可--缺点就是如果程序
放到别人的服务器上,不能修改php.ini,那就奈何不得了。
3、在程序中添加时间的初始化的语句的 即:“date_default_timezone_set("Asia/Shanghai"); ”这个可以由程序员任意设置,我的推荐。
时区标识符,大陆内地可用的值是:PRC,Asia/Chongqing ,Asia/Shanghai ,Asia/Urumqi (依次为中国,重庆,上海,乌鲁木齐) ,Etc/GMT-8,Asia/Harbin
港台地区可用:Asia/Macao ,Asia/Hong_Kong ,Asia/Taipei (依次为澳门,香港,台北)
还有新加坡:Asia/Singapore
这样就可以实现输出的是北京时间了