首頁 > 後端開發 > php教程 > PHP時間戳函數詳解

PHP時間戳函數詳解

小云云
發布: 2023-03-22 17:20:02
原創
2815 人瀏覽過

本文主要和大家分享PHP時間戳函數詳解,主要以程式碼的形式和大家分享,希望能幫助大家。

echo "末日時間戳記為:".strtotime("2012-12-21")

 2.將時間戳記轉換為系統時間

date('Y-m-d H:i:s',"1228348800");
登入後複製

(1)取得當天零點時間戳記

$timetoday = strtotime(date("Y-m-d",time()));
登入後複製

(2)取得明天零點時間戳

$tomorrow = $timetoday + 3600*24;
登入後複製

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()格式化日期時間獲取指定的時間戳,實現所需的日期時間

話說看到別人寫的這麼一個函數,測試了一下,有些小毛病:跨年日期,沒有顯示年份。修改如下

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 . &#39;秒前&#39;; // 一分钟内
      break;
     case $t < 60 * 60:
      $text = floor($t / 60) . &#39;分钟前&#39;; //一小时内
      break;
     case $t < 60 * 60 * 24:
      $text = floor($t / (60 * 60)) . &#39;小时前&#39;; // 一天内
      break;
     case $t < 60 * 60 * 24 * 3:
      $text = floor($time/(60*60*24)) ==1 ?&#39;昨天 &#39; . date(&#39;H:i&#39;, $time) : &#39;前天 &#39; . date(&#39;H:i&#39;, $time) ; //昨天和前天
      break;
     case $t < 60 * 60 * 24 * 30:
      $text = date(&#39;m月d日 H:i&#39;, $time); //一个月内
      break;
     case $t < 60 * 60 * 24 * 365&&$y==0:
      $text = date(&#39;m月d日&#39;, $time); //一年内
      break;
     default:
      $text = date(&#39;Y年m月d日&#39;, $time); //一年以前
      break;
    }
        
    return $text;
}
登入後複製

ThinkPHP中:

將寫好的函數放到 Common 資料夾下。系統會自動載入的。
放到這個common.php頁裡,common.php 固有格式,不要改名。

模板中直接呼叫

{$vo.time|mdate}
登入後複製

 例2,簡單一些的

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;
}
登入後複製

 下發一個友好時間的方法給大家

/**
 * 友好时间显示
 * @param $time
 * @return bool|string
 */
function friend_date($time)
{
    if (!$time)
        return false;
    $fdate = &#39;&#39;;
    $d = time() - intval($time);
    $ld = $time - mktime(0, 0, 0, 0, 0, date(&#39;Y&#39;)); //得出年
    $md = $time - mktime(0, 0, 0, date(&#39;m&#39;), 0, date(&#39;Y&#39;)); //得出月
    $byd = $time - mktime(0, 0, 0, date(&#39;m&#39;), date(&#39;d&#39;) - 2, date(&#39;Y&#39;)); //前天
    $yd = $time - mktime(0, 0, 0, date(&#39;m&#39;), date(&#39;d&#39;) - 1, date(&#39;Y&#39;)); //昨天
    $dd = $time - mktime(0, 0, 0, date(&#39;m&#39;), date(&#39;d&#39;), date(&#39;Y&#39;)); //今天
    $td = $time - mktime(0, 0, 0, date(&#39;m&#39;), date(&#39;d&#39;) + 1, date(&#39;Y&#39;)); //明天
    $atd = $time - mktime(0, 0, 0, date(&#39;m&#39;), date(&#39;d&#39;) + 2, date(&#39;Y&#39;)); //后天
    if ($d == 0) {
        $fdate = &#39;刚刚&#39;;
    } else {
        switch ($d) {
            case $d < $atd:
                $fdate = date(&#39;Y年m月d日&#39;, $time);
                break;
            case $d < $td:
                $fdate = &#39;后天&#39; . date(&#39;H:i&#39;, $time);
                break;
            case $d < 0:
                $fdate = &#39;明天&#39; . date(&#39;H:i&#39;, $time);
                break;
            case $d < 60:
                $fdate = $d . &#39;秒前&#39;;
                break;
            case $d < 3600:
                $fdate = floor($d / 60) . &#39;分钟前&#39;;
                break;
            case $d < $dd:
                $fdate = floor($d / 3600) . &#39;小时前&#39;;
                break;
            case $d < $yd:
                $fdate = &#39;昨天&#39; . date(&#39;H:i&#39;, $time);
                break;
            case $d < $byd:
                $fdate = &#39;前天&#39; . date(&#39;H:i&#39;, $time);
                break;
            case $d < $md:
                $fdate = date(&#39;m月d日 H:i&#39;, $time);
                break;
            case $d < $ld:
                $fdate = date(&#39;m月d日&#39;, $time);
                break;
            default:
                $fdate = date(&#39;Y年m月d日&#39;, $time);
                break;
        }
    }
    return $fdate;
}
登入後複製

相關推薦:

PHP取得目前的時間戳記函數詳細講解

#

以上是PHP時間戳函數詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板