ホームページ > バックエンド開発 > PHPチュートリアル > PHP形式のタイムスタンプグラフィックとテキストの詳細な説明

PHP形式のタイムスタンプグラフィックとテキストの詳細な説明

墨辰丷
リリース: 2023-03-28 10:58:01
オリジナル
2102 人が閲覧しました

一般に、Unix タイムスタンプは mysql データベースに時間を保存するために使用されます。それでは、時間を表示する際にもっとわかりやすくできるとしたらどうなるでしょうか? 今日は、必要なときに参照できる 3 つのカプセル化された書式設定関数を紹介します。 CMS での表示時間が比較的新しい場合は、数分前、数日前に表示する必要がありますが、一般的にデータベース内のすべてのレコードはタイムスタンプであるため (少なくとも私はこれに慣れています)、変換プロセスが必要です。オンライン情報 私は独自の変更を加えて 2 つのコードをカプセル化しました

以下はカプセル化されたメソッドです

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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート