php时间戳与日期转换

日期转换为时间戳

PHP 提供了函数可以方便的将各种形式的日期转换为时间戳,该类函数主要是:

  • strtotime():将任何英文文本的日期时间描述解析为时间戳。
  • mktime():从日期取得时间戳。

strtotime()

strtotime() 函数用于将英文文本字符串表示的日期转换为时间戳,为 date() 的反函数,成功返回时间戳,否则返回 FALSE 。

语法:

int strtotime ( string time [, int now] )

参数 time 为被解析的字符串,是根据 GNU 日期输入格式表示的日期。

例子:

<?php
echo strtotime("2009-10-21 16:00:10");	//输出 1256112010
echo strtotime("10 September 2008");	//输出 1220976000
echo strtotime("+1 day"), "<br />";	//输出明天此时的时间戳
?>

mktime()

mktime() 函数用于从日期取得时间戳,成功返回时间戳,否则返回 FALSE 。

语法:

int mktime(时, 分, 秒, 月, 日, 年)

例子:

<?php
echo mktime(21, 50, 55, 07, 14, 2010);		//输出“1279115455”
?>

参数可以从右向左省略,任何省略的参数会被设置成本地日期和时间的当前值。

mktime() 在做日期计算和验证方面很有用,它会自动计算超出范围的输入的正确值。例如下面例子输出的都是 2008-01-01:

<?php
echo date("Y-m-d", mktime(0, 0, 0, 12, 32, 2007));
echo date("Y-m-d", mktime(0, 0, 0, 13, 1, 2007));
?>

下个月的最后一天:

任何给定月份的最后一天都可以被表示为下个月的第 "0" 天,而不是 -1 天,如下面的例子:

<?php
$lastday = mktime(0, 0, 0, 3, 0, 2008);
echo strftime("2008年最后一天是:%d", $lastday);
?>

浏览器输出:

2008年最后一天是:29


便于比较,使用date将当时间戳与指定时间戳转换成系统时间

(1)打印明天此时的时间戳strtotime(”+1 day”)

当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25

指定时间:echo date(”Y-m-d H:i:s”,strtotime(”+1 day”)) 结果:2009-01-2309:40:25

(2)打印昨天此时的时间戳strtotime(”-1 day”)

当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25

指定时间:echo date(”Y-m-d H:i:s”,strtotime(”-1 day”)) 结果:2009-01-2109:40:25

(3)打印下个星期此时的时间戳strtotime(”+1 week”)

当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25

指定时间:echo date(”Y-m-d H:i:s”,strtotime(”+1 week”)) 结果:2009-01-2909:40:25

(4)打印上个星期此时的时间戳strtotime(”-1 week”)

当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25

指定时间:echo date(”Y-m-d H:i:s”,strtotime(”-1 week”)) 结果:2009-01-1509:40:25

(5)打印指定下星期几的时间戳strtotime(”next Thursday”)

当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25

指定时间:echo date(”Y-m-d H:i:s”,strtotime(”next Thursday”))结果:2009-01-29 00:00:00

(6)打印指定上星期几的时间戳strtotime(”last Thursday”)

当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25

指定时间:echo date(”Y-m-d H:i:s”,strtotime(”last Thursday”))结果:2009-01-15 00:00:00
以上PHP时间戳函数示例可知,strtotime能将任何英文文本的日期时间描述解析为Unix时间戳,我们结合mktime()或date()格式化日期时间获取指定的时间戳,实现所需要的日期时间。

示例:

<?php
 

 
 
 
//时间戳转日期
$date_time_array = getdate(1297845628);//1311177600  1316865566
$hours = $date_time_array["hours"];
$minutes = $date_time_array["minutes"];
$seconds = $date_time_array["seconds"];
$month = $date_time_array["mon"];
$day = $date_time_array["mday"];
$year = $date_time_array["year"];
 
echo"year:$year month:$month day:$day hour:$hours minutes:$minutes seconds:$seconds ";
 
//正常日期转时间戳
echo mktime(0, 0, 0, 9, 18, 2011) . " ";
echo mktime(0, 0, 0, 9, 25, 2011) . " ";
 

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

$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);
 

?>




 

时间戳转换为日期

echo "time()显示年月日时分秒:" . date("Y-m-d H:i:s", time()) . " ";
//这样连时,分秒一起显示
echo "time()只显示年月日:" . date("Y-m-d ", time()) . " ";//只年示年月日
 
echo "时间戳格式化:" . date("Y-m-d H:i:s", 1297845628) . " ";//直接使用时间戳

Y :年(四位数)大写 
m : 月(两位数,首位不足补0) 小写 
d :日(两位数,首位不足补0) 小写 
H:小时 带有首位零的 24 小时小时格式 
h :小时 带有首位零的 12 小时小时格式 
i :带有首位零的分钟 
s :带有首位零的秒(00 -59) 
a:小写的午前和午后(am 或 pm)

原文地址:https://www.cnblogs.com/Im-Victor/p/9438512.html