刚刚,一年前,时间判断代码重写

本文介绍了两个用于将时间戳转换为易于理解的时间表达式的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;
}
 
 
/**
 * 友好时间显示
 * @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);
                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;
}

转载于:https://www.cnblogs.com/lvfish/p/9908226.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值