PHP时间戳函数(⼏分钟、⼏⼩时前、⼏天前,今天零点等)
时间戳是我们在时间⽇期对⽐时常⽤到⼀个⼩功能,下⾯我先来给各位介绍strtotime时间戳转换的⼀些⽅法与利⽤它来做⼀个⽇期格式化的⼏分钟、⼏⼩时前、⼏天前的⼀个实例。
1.PHP时间戳函数将⽇期转化为unix时间戳
世界末⽇时间戳 PHP
echo "世界末⽇时间戳为:".strtotime("2012-12-21")
2.将时间戳转化为系统时间
date('Y-m-d H:i:s',"1228348800");
(1)获取当天零点时间戳
$timetoday = strtotime(date("Y-m-d",time()));
(2)获取明天零点时间戳
$tomorrow = $timetoday + 3600*24;
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()格式化⽇期时间获取指定的时间戳,实现所需要的⽇期时间
话说看到别⼈写的这么⼀个函数,测试了⼀下,有些⼩⽑病:对于跨年⽇期,没有显⽰年份。修改如下
function mdate($time = NULL) {
$text = '';
$time = $time === NULL || $time > time() ? time() : intval($time);
$t = time() - $time; //时间差(秒)
$y = date('Y', $time)-date('Y', time());//是否跨年
switch($t){
case $t == 0:
$text = '刚刚';
break;
case $t < 60:
$text = $t . '秒前'; // ⼀分钟内
break;
case $t < 60 * 60:
$text = floor($t / 60) . '分钟前'; //⼀⼩时内
break;
case $t < 60 * 60 * 24:
$text = floor($t / (60 * 60)) . '⼩时前'; // ⼀天内
break;
case $t < 60 * 60 * 24 * 3:
$text = floor($time/(60*60*24)) ==1 ?'昨天 ' . date('H:i', $time) : '前天 ' . date('H:i', $time) ; //昨天和前天      break;
case $t < 60 * 60 * 24 * 30:
$text = date('m⽉d⽇ H:i', $time); //⼀个⽉内
break;
case $t < 60 * 60 * 24 * 365&&$y==0:
$text = date('m⽉d⽇', $time); //⼀年内
break;
default:
$text = date('Y年m⽉d⽇', $time); //⼀年以前
break;
}
return $text;
}
ThinkPHP中:
将写好的函数放到 Common ⽂件夹下。系统会⾃动加载的。
放到这个common.php页⾥,common.php 固有格式,不要改名。
模板中直接调⽤
{$vo.time|mdate}
例2,简单⼀些的
function formatDate($sTime) {
//sTime=源时间,cTime=当前时间,dTime=时间差
$cTime  = time();
$dTime  = $cTime - $sTime;
$dDay  = intval(date("Ymd",$cTime)) - intval(date("Ymd",$sTime));
$dYear  = intval(date("Y",$cTime)) - intval(date("Y",$sTime));
if( $dTime < 60 ){
$dTime =  $dTime."秒前";
}elseif( $dTime < 3600 ){
$dTime =  intval($dTime/60)."分钟前";
}elseif( $dTime >= 3600 && $dDay == 0  ){
$dTime =  "今天".date("H:i",$sTime);
}elseif($dYear==0){
$dTime =  date("m-d H:i",$sTime);
}else{
$dTime =  date("Y-m-d H:i",$sTime);
}
return $dTime;
}
下⾯发⼀个友好时间的⽅法给⼤家
/**
* 友好时间显⽰
* @param $time
* @return bool|string
*/
function friend_date($time)
{
if (!$time)
return false;
$fdate = '';
$d = time() - intval($time);
$ld = $time - mktime(0, 0, 0, 0, 0, date('Y')); //得出年
$md = $time - mktime(0, 0, 0, date('m'), 0, date('Y')); //得出⽉
$byd = $time - mktime(0, 0, 0, date('m'), date('d') - 2, date('Y')); //前天
$yd = $time - mktime(0, 0, 0, date('m'), date('d') - 1, date('Y')); //昨天
$dd = $time - mktime(0, 0, 0, date('m'), date('d'), date('Y')); //今天
$td = $time - mktime(0, 0, 0, date('m'), date('d') + 1, date('Y')); //明天    $atd = $time - mktime(0, 0, 0, date('m'), date('d') + 2, date('Y')); //后天    if ($d == 0) {
$fdate = '刚刚';
} else {
switch ($d) {
case $d < $atd:
$fdate = date('Y年m⽉d⽇', $time);
break;
case $d < $td:
$fdate = '后天' . date('H:i', $time);
trunc函数使用时间break;
case $d < 0:
$fdate = '明天' . date('H:i', $time);
break;
case $d < 60:
$fdate = $d . '秒前';
break;
case $d < 3600:
$fdate = floor($d / 60) . '分钟前';
break;
case $d < $dd:
$fdate = floor($d / 3600) . '⼩时前';
break;
case $d < $yd:
$fdate = '昨天' . date('H:i', $time);
break;
case $d < $byd:
$fdate = '前天' . date('H:i', $time);
break;
case $d < $md:
$fdate = date('m⽉d⽇ H:i', $time);
break;
case $d < $ld:
$fdate = date('m⽉d⽇', $time);
break;
default:
$fdate = date('Y年m⽉d⽇', $time);
break;
}
}
return $fdate;
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。