A-A+

PHP时间戳函数用法总结

2012年12月13日 PHP 暂无评论 阅读 2,970 次

时间戳也被称为 Unix 时间戳(Unix Timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。Unix时间戳不仅被使用在Unix系统、类Unix系统中(比如Linux系统),也在许多其他操作系统中被广泛采用。

在开发Web程序时,时间起着重要的作用。不仅在数据存储和显示时需要日期和时间的管理,有一些功能模块的开发,时间通常是至关重要的。例如,网页静态化需要判断缓存时间、计算页面访问消耗的时间、在不同的时间段提供不同的功能等。PHP提供了强大的日期和时间处理功能,通过时间和日期函数库,能够得到PHP程序在运行时所在服务器中的日期和时间,并可以对它们进行检查和格式化,在不同格式之间进行转换。

我们在本文种为大家总结了PHP时间戳函数,希望能作为参考学习对象。

1.PHP时间戳函数将日期转化为unix时间戳

echo "世界末日时间戳为:".strtotime("2012-12-21") 

2.将时间戳转化为系统时间

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

3.PHP时间戳函数获取英文文本日期时间 示例如下:

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

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

//当前时间
echo date("Y-m-d H:i:s",time());
//明天此时时间
echo date("Y-m-d H:i:s",strtotime("+1 day"));

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

//当前时间
echo date("Y-m-d H:i:s",time()) ;
//指定时间
echo date("Y-m-d H:i:s",strtotime("-1 day"));

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

//当前时间
echo date("Y-m-d H:i:s",time());
//下星期时间
echo date("Y-m-d H:i:s",strtotime("+1 week"));

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

//当前时间
echo date("Y-m-d H:i:s",time());
//上个星期此时时间
echo date("Y-m-d H:i:s",strtotime("-1 week"));

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

//当前时间
echo date("Y-m-d H:i:s",time());
//下星期几时间
echo date("Y-m-d H:i:s",strtotime("next Thursday"));

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

//当前时间
echo date("Y-m-d H:i:s",time());
//指定时间
echo date("Y-m-d H:i:s",strtotime("last Thursday"));

以上PHP时间戳函数示例可知,strtotime能将任何英文文本的日期时间描述解析为Unix时间戳,我们结合mktime()或date()格式化日期时间获取指定的时间戳,实现所需要的日期时间。

示例:

<?php

/***************************************************************************
 *
 * Copyright (c) 2012 lxy.me, Inc. All Rights Reserved
 * $Id$
 *
 **************************************************************************/

//时间戳转日期
$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\nmonth:$month\nday:$day\nhour:$hours\nminutes:$minutes\nseconds:$seconds\n";

//正常日期转时间戳
echo mktime(0, 0, 0, 9, 18, 2011) . "\n";
echo mktime(0, 0, 0, 9, 25, 2011) . "\n";

/*
time();
是获得当前时间,但获得的是一整型
*/
//可以对此进行格式化
echo "time()显示年月日时分秒:" . date("Y-m-d H:i:s", time()) . "\n";
//这样连时,分秒一起显示
echo "time()只显示年月日:" . date("Y-m-d ", time()) . "\n"; //只年示年月日
echo "时间戳格式化:" . date("Y-m-d H:i:s", 1297845628) . "\n"; //直接使用时间戳
/* vim: set ts=4 sw=4 sts=4 tw=100 noet: */
?>

4.PHP里怎么将2个字符串时间相减得到秒数?

$a = '2012-02-05 16:08:20'; 
$b = '2012-02-05 16:09:20'; 
//b比a大1分钟也就是60秒,怎么相减得到60
//把这个转化为具体的时间戳,用strtotime
strtotime($b)-strtotime($a)=60
//得到秒数,然后就可以减了

5.PHP里怎么将2个字符串时间相减得到分钟数

$bbb= "08:55 "; 
$aaa= "08:50 "   ; 
echo   ceil((strtotime($bbb)-strtotime($aaa))/60); 

6.时间戳比较

比如,数据库里面的时间戳:1276650817 是2010年6月16日 9:13:37
目前本地时间是:1276674758 是2010年6月16日 15:52:38
我想让前台显示,此文章是XXX天XXX小时XXX分钟前发布

$time = 1276674758-1276650817; 
$yourhour = (int)($time/(60*60)); 
$yourmin = (int)($time%(60*60)/60);

把两个时间戳相减,然后把得到的数据跟一天的秒数相除再取整,然后再把剩下的跟小时去相除取整,以此类推就是啦

在Windows下,由于时间戳不能为负数,如果使用PHP中提供的时间戳函数处理1970年之前的日期,就会发生错误。要使用PHP代码具有可移植性,必须记住这一点。

给我留言