>  기사  >  백엔드 개발  >  PHP 형식의 타임스탬프 그래픽 및 텍스트에 대한 자세한 설명

PHP 형식의 타임스탬프 그래픽 및 텍스트에 대한 자세한 설명

墨辰丷
墨辰丷원래의
2018-05-29 14:58:582079검색

일반적으로 Unix 타임스탬프는 mysql 데이터베이스에 시간을 저장하는 데 사용됩니다. 그렇다면 시간을 표시할 때 좀 더 친숙하게 사용할 수 있다면 어떨까요? 오늘은 도움이 필요한 친구들이 참고할 수 있는 3가지 형식화 기능을 알려드리겠습니다. CMS에 비교적 새로운 표시 시간이 있으면 몇 분 전, 며칠 전에 표시해야 하지만 일반적으로 데이터베이스의 모든 레코드는 타임스탬프이므로(적어도 저는 이에 익숙합니다) 에 따르면 변환 프로세스가 필요합니다. 온라인 정보 나는 내 자신의 수정으로 두 개의 코드 조각을 캡슐화했습니다

다음은 캡슐화된 방법

function formatTime($time) {
    $time = (int) substr($time, 0, 10);
    $int = time() - $time;
    $str = '';
    if ($int <= 2){
      $str = sprintf(&#39;刚刚&#39;, $int);
    }elseif ($int < 60){
      $str = sprintf(&#39;%d秒前&#39;, $int);
    }elseif ($int < 3600){
      $str = sprintf(&#39;%d分钟前&#39;, floor($int / 60));
    }elseif ($int < 86400){
      $str = sprintf(&#39;%d小时前&#39;, floor($int / 3600));
    }elseif ($int < 2592000){
      $str = sprintf(&#39;%d天前&#39;, floor($int / 86400));
    }else{
      $str = date(&#39;Y-m-d H:i:s&#39;, $time);
    }
    return $str;
  }


또는 더 자세한 방법

  function formatTime($time)
  {
    $text = &#39;&#39;;
    $time = intval($time);
    $ctime = time();
    $t = $ctime - $time; //时间差
    if ($t < 0) {
      return date(&#39;Y-m-d&#39;, $time);
    }
    ;
    $y = date(&#39;Y&#39;, $ctime) - date(&#39;Y&#39;, $time);//是否跨年
    switch ($t) {
      case $t == 0:
        $text = &#39;刚刚&#39;;
        break;
      case $t < 60://一分钟内
        $text = $t . &#39;秒前&#39;;
        break;
      case $t < 3600://一小时内
        $text = floor($t / 60) . &#39;分钟前&#39;;
        break;
      case $t < 86400://一天内
        $text = floor($t / 3600) . &#39;小时前&#39;; // 一天内
        break;
      case $t < 2592000://30天内
        if($time > strtotime(date(&#39;Ymd&#39;,strtotime("-1 day")))) {
          $text = &#39;昨天&#39;;
        } elseif($time > strtotime(date(&#39;Ymd&#39;,strtotime("-2 days")))) {
          $text = &#39;前天&#39;;
        } else {
          $text = floor($t / 86400) . &#39;天前&#39;;
        }
        break;
      case $t < 31536000 && $y == 0://一年内 不跨年
        $m = date(&#39;m&#39;, $ctime) - date(&#39;m&#39;, $time) -1;

        if($m == 0) {
          $text = floor($t / 86400) . &#39;天前&#39;;
        } else {
          $text = $m . &#39;个月前&#39;;
        }
        break;
      case $t < 31536000 && $y > 0://一年内 跨年
        $text = (11 - date(&#39;m&#39;, $time) + date(&#39;m&#39;, $ctime)) . &#39;个月前&#39;;
        break;
      default:
        $text = (date(&#39;Y&#39;, $ctime) - date(&#39;Y&#39;, $time)) . &#39;年前&#39;;
        break;
    }

    return $text;
  }


과 유사한 방법을 공유합니다.

//格式化友好显示时间
function formatTime($time){
	$now=time();
	$day=date(&#39;Y-m-d&#39;,$time);
	$today=date(&#39;Y-m-d&#39;);
	
	$dayArr=explode(&#39;-&#39;,$day);
	$todayArr=explode(&#39;-&#39;,$today);
	
	//距离的天数,这种方法超过30天则不一定准确,但是30天内是准确的,因为一个月可能是30天也可能是31天
	$days=($todayArr[0]-$dayArr[0])*365+(($todayArr[1]-$dayArr[1])*30)+($todayArr[2]-$dayArr[2]);
	//距离的秒数
	$secs=$now-$time;
	
	if($todayArr[0]-$dayArr[0]>0 && $days>3){//跨年且超过3天
		return date(&#39;Y-m-d&#39;,$time);
	}else{
	
		if($days<1){//今天
			if($secs<60)return $secs.&#39;秒前&#39;;
			elseif($secs<3600)return floor($secs/60)."分钟前";
			else return floor($secs/3600)."小时前";
		}else if($days<2){//昨天
			$hour=date(&#39;h&#39;,$time);
			return "昨天".$hour.&#39;点&#39;;
		}elseif($days<3){//前天
			$hour=date(&#39;h&#39;,$time);
			return "前天".$hour.&#39;点&#39;;
		}else{//三天前
			return date(&#39;m月d号&#39;,$time);
		}
	}
}




위 내용은 이 글의 전체 내용이므로, 모든 분들의 공부에 도움이 되었으면 좋겠습니다.


관련 권장 사항:

php 형식 타임스탬프는 친숙한 시간, PHP 형식을 표시합니다.


mysql 시간 형식 지정_MySQL


PHP 형식 시간 문제를 생각해 보세요



위 내용은 PHP 형식의 타임스탬프 그래픽 및 텍스트에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.