首页 > php日期 > PHP时间戳函数,几分钟、几小时前、几天前等

PHP时间戳函数,几分钟、几小时前、几天前等

时间戳是我们在时间日期对比时常用到一个小功能,下面我先来给各位介绍strtotime时间戳转换的一些方法与利用它来做一个日期格式化的几分钟、几小时前、几天前的一个实例.

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
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,简单一些的代码如下:

<?php
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;
}
?>


本文地址:http://www.phprm.com/riqi/fs3588.html

转载随意,但请附上文章地址:-)

标签:php时间戳函数 php几天前

发表留言