【问题标题】:message date ago (xx month ago or years)消息日期前(xx 个月前或几年前)
【发布时间】:2016-02-07 11:49:53
【问题描述】:

大家好,如果天数达到月/年数,我怎么能像 xx 月/秒前和一年/秒前一样制作这个。可能吗 ?无论如何,我正在制作一个消息传递模块。这是我的代码。提前谢谢你们的帮助

<?php       
   date_default_timezone_set('Asia/Manila');
    $now = strtotime(date("Y-m-d H:i:s"));
    $date = strtotime($key->message_date); //this is the date where message was sent
    $dateDiff = abs($now - $date);
    $fullDays = floor($dateDiff/(60*60*24));
     if($fullDays==0)
     {
        echo " Today ";
     }
     else if($fullDays==1)
     {
        echo " Yesterday ";
     }
     else
     {
        echo $fullDays ." days ago";
     }
     $at=date('g:iA',$date)
    ?> at <?php echo $at?>

【问题讨论】:

  • 出了什么问题?
  • 我不知道如何才能让它像 1 个月前一样......我不能只将它除以 30。如果这个月只有 28 天怎么办?已经是 1 个月前了。我该如何解决?

标签: php codeigniter date


【解决方案1】:

你可以使用这个函数你有传递消息时间作为参数

function convert_time($ptime){
        $etime = time() - $ptime;

        if($etime < 1){
            return '0 seconds';
        }

        $a = array( 12 * 30 * 24 * 60 * 60  =>  'year',
                    30 * 24 * 60 * 60       =>  'month',
                    24 * 60 * 60            =>  'day',
                    60 * 60                 =>  'hour',
                    60                      =>  'minute',
                    1                       =>  'second'
                );

        foreach ($a as $secs => $str){
            $d = $etime / $secs;
            if($d >= 1){
                $r = round($d);
                return $r . ' ' . $str . ($r > 1 ? 's' : '') . ' ago';
            }
        }
    }

在这个函数中你可以得到“(1)秒/分钟/小时/天/月/年之前”

【讨论】:

  • $ptime 的值是多少?我的值的格式为 Y-m-d h:i:s
  • 通过 strtoime('Y-m-d h:i:s') 转换你的 Y-m-d h:i:s
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-11
  • 1970-01-01
相关资源
最近更新 更多