Home >php教程 >php手册 >PHP 时间与字符串的相互转化

PHP 时间与字符串的相互转化

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-06-06 19:50:191103browse

1、求两个日期的差数,例如2007-3-5 ~ 2007-3-6 的日期差数 echo abs(strtotime(2007-3-5) - strtotime(2007-3-6))/60/60/24; echo 天br; 2、JS 获取当前日期 var myDate = new Date(); myDate.getYear(); //获取当前年份(2位) myDate.getFullYear(); //获取

1、求两个日期的差数,例如2007-3-5 ~ 2007-3-6 的日期差数
echo abs(strtotime("2007-3-5") - strtotime("2007-3-6"))/60/60/24;
echo "天
";

 

2、JS 获取当前日期

var myDate = new Date();
myDate.getYear();        //获取当前年份(2位)
myDate.getFullYear();    //获取完整的年份(4位,1970-????)
myDate.getMonth();       //获取当前月份(0-11,0代表1月)
myDate.getDate();        //获取当前日(1-31)
myDate.getDay();         //获取当前星期X(0-6,0代表星期天)
myDate.getTime();        //获取当前时间(从1970.1.1开始的毫秒数)
myDate.getHours();       //获取当前小时数(0-23)
myDate.getMinutes();     //获取当前分钟数(0-59)
myDate.getSeconds();     //获取当前秒数(0-59)
myDate.getMilliseconds();    //获取当前毫秒数(0-999)
myDate.toLocaleDateString();     //获取当前日期
var mytime=myDate.toLocaleTimeString();     //获取当前时间
myDate.toLocaleString( );        //获取日期与时间

3、PHP 日期与时间戳相互转化

PHP时间大的来分有两种,一是时间戳类型(1228348800),二是正常日期格式(2008-12-4)

所以存到数据库也有两种形式了(真正不止,我的应用就两种),时间戳类型我是保存为字符串的,这个是比较方便的.

正常日期类型是保存为DATE型的.

这两个要注意一下,我平时用两种,所以,前几天建的表,把时间类型存为DATE的,我还一直用时间戳保存,一直资料写不进表,调试了好久的才知错误之处,是类型不符合,不给写入库.

像上面的时间戳是比较方便,但,显示的时候,不至于把这个1228348800串给客户看吧,GOD NOWS!

所以就用到了这两个的转换,先说一下如何取得当前的时间戳,$date1=time();这样就取得当前的时间戳了,要转回2008-12-4这种格式呢, 用到date()这个函数了,在PHP中date()函数比较常用,如取得当前日期,可以用$date2=date('Y-m-d');,关于里面参数的意思,如不懂就查一下php的手册了.

好,言归正传,把1228348800转成2008-12-4格式代码如下:

$date3=date('Y-m-d H:i:s',"1228348800");

这样就OK了,如还想得到小时,分钟秒,只要把'Y-m-d'改一下就可以了,不过要注意一下,PHP时间还像有8个小时的误差.加上就OK了.

时间戳转正常日期有了,反之呢,把正常日期格式转为时间戳呢,请看如下代码:

$year=((int)substr("2008-12-04",0,4));//取得年份

$month=((int)substr("2008-12-04",5,2));//取得月份

$day=((int)substr("2008-12-04",8,2));//取得几号

echo mktime(0,0,0,$month,$day,$year);

这样就能把正常日期转成时间戳了,这里如果有时分秒也是同理,

注意: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

这样就可以实现输出的是北京时间了

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn