복붙노트

PHP로 시간 차이를 얻는 방법

PHP

PHP로 시간 차이를 얻는 방법

어떻게 PHP에서 두 날짜 시간 사이의 분 차이를 계산하려면?

해결법

  1. ==============================

    1.

    미래의 가장 큰 것을 하나 빼고 60으로 나눕니다.

    시간은 Unix 형식으로 이루어 지므로 1970 년 1 월 1 일 00:00:00 GMT에서 초가 표시되는 큰 숫자 일뿐입니다.

  2. ==============================

    2.

    위의 대답은 PHP의 이전 버전에 대한 것입니다. PHP 5.3이 표준이되었으므로 DateTime 클래스를 사용하여 날짜 계산을 수행하십시오. 예 :

    $start_date = new DateTime('2007-09-01 04:10:58');
    $since_start = $start_date->diff(new DateTime('2012-09-11 10:25:00'));
    echo $since_start->days.' days total<br>';
    echo $since_start->y.' years<br>';
    echo $since_start->m.' months<br>';
    echo $since_start->d.' days<br>';
    echo $since_start->h.' hours<br>';
    echo $since_start->i.' minutes<br>';
    echo $since_start->s.' seconds<br>';
    

    $ since_start는 DateInterval 객체입니다. days 속성은 사용할 수 있습니다 (DateTime 클래스의 diff 메서드를 사용하여 DateInterval 객체를 생성했기 때문에).

    위의 코드는 다음과 같이 출력됩니다.

    1837 일 총 5 년 0 개월 10 일 6 시간 14 분 2 초

    총 시간 (분)을 얻으려면 다음과 같이하십시오.

    $minutes = $since_start->days * 24 * 60;
    $minutes += $since_start->h * 60;
    $minutes += $since_start->i;
    echo $minutes.' minutes';
    

    그러면 다음과 같이 출력됩니다.

    2645654 분

    두 날짜 사이에 경과 한 실제 분 수입니다. DateTime 클래스는 "이전 방식"이 적용되지 않는 계정에 일광 절약 시간제를 사용합니다 (시간대에 따라 다름). 날짜 및 시간에 대한 매뉴얼보기 http://www.php.net/manual/en/book.datetime.php

  3. ==============================

    3.

    여기에 대한 답변입니다 :

    $to_time = strtotime("2008-12-13 10:42:00");
    $from_time = strtotime("2008-12-13 10:21:00");
    echo round(abs($to_time - $from_time) / 60,2). " minute";
    
  4. ==============================

    4.

    <?php
    $date1 = time();
    sleep(2000);
    $date2 = time();
    $mins = ($date2 - $date1) / 60;
    echo $mins;
    ?>
    
  5. ==============================

    5.

    내 프로그램에서 일했는데, 나는 date_diff를 사용했다. 여기서 date_diff 매뉴얼을 확인할 수있다.

    $start = date_create('2015-01-26 12:01:00');
    $end = date_create('2015-01-26 13:15:00');
    $diff=date_diff($end,$start);
    print_r($diff);
    

    원하는 결과를 얻을 수 있습니다.

  6. ==============================

    6.

    시간대와 다른 방법.

    $start_date = new DateTime("2013-12-24 06:00:00",new DateTimeZone('Pacific/Nauru'));
    $end_date = new DateTime("2013-12-24 06:45:00", new DateTimeZone('Pacific/Nauru'));
    $interval = $start_date->diff($end_date);
    $hours   = $interval->format('%h'); 
    $minutes = $interval->format('%i');
    echo  'Diff. in minutes is: '.($hours * 60 + $minutes);
    
  7. ==============================

    7.

    이게 너에게 도움이 될 것 같아.

    function calculate_time_span($date){
        $seconds  = strtotime(date('Y-m-d H:i:s')) - strtotime($date);
    
            $months = floor($seconds / (3600*24*30));
            $day = floor($seconds / (3600*24));
            $hours = floor($seconds / 3600);
            $mins = floor(($seconds - ($hours*3600)) / 60);
            $secs = floor($seconds % 60);
    
            if($seconds < 60)
                $time = $secs." seconds ago";
            else if($seconds < 60*60 )
                $time = $mins." min ago";
            else if($seconds < 24*60*60)
                $time = $hours." hours ago";
            else if($seconds < 24*60*60)
                $time = $day." day ago";
            else
                $time = $months." month ago";
    
            return $time;
    }
    
  8. ==============================

    8.

    function date_getFullTimeDifference( $start, $end )
    {
    $uts['start']      =    strtotime( $start );
            $uts['end']        =    strtotime( $end );
            if( $uts['start']!==-1 && $uts['end']!==-1 )
            {
                if( $uts['end'] >= $uts['start'] )
                {
                    $diff    =    $uts['end'] - $uts['start'];
                    if( $years=intval((floor($diff/31104000))) )
                        $diff = $diff % 31104000;
                    if( $months=intval((floor($diff/2592000))) )
                        $diff = $diff % 2592000;
                    if( $days=intval((floor($diff/86400))) )
                        $diff = $diff % 86400;
                    if( $hours=intval((floor($diff/3600))) )
                        $diff = $diff % 3600;
                    if( $minutes=intval((floor($diff/60))) )
                        $diff = $diff % 60;
                    $diff    =    intval( $diff );
                    return( array('years'=>$years,'months'=>$months,'days'=>$days, 'hours'=>$hours, 'minutes'=>$minutes, 'seconds'=>$diff) );
                }
                else
                {
                    echo "Ending date/time is earlier than the start date/time";
                }
            }
            else
            {
                echo "Invalid date/time data detected";
            }
    }
    
  9. ==============================

    9.

    내 블로그 사이트 (지난 날짜와 서버 날짜의 차이)에 대해이 함수를 작성했습니다. 그것은 당신에게 이런 결과를 줄 것입니다.

    "49 초 전", "20 분 전", "21 시간 전"등

    전달 된 날짜와 서버의 날짜 사이의 차이점을 얻을 수있는 함수를 사용했습니다.

    <?php
    
    //Code written by purpledesign.in Jan 2014
    function dateDiff($date)
    {
      $mydate= date("Y-m-d H:i:s");
      $theDiff="";
      //echo $mydate;//2014-06-06 21:35:55
      $datetime1 = date_create($date);
      $datetime2 = date_create($mydate);
      $interval = date_diff($datetime1, $datetime2);
      //echo $interval->format('%s Seconds %i Minutes %h Hours %d days %m Months %y Year    Ago')."<br>";
      $min=$interval->format('%i');
      $sec=$interval->format('%s');
      $hour=$interval->format('%h');
      $mon=$interval->format('%m');
      $day=$interval->format('%d');
      $year=$interval->format('%y');
      if($interval->format('%i%h%d%m%y')=="00000")
      {
        //echo $interval->format('%i%h%d%m%y')."<br>";
        return $sec." Seconds";
    
      } 
    
    else if($interval->format('%h%d%m%y')=="0000"){
       return $min." Minutes";
       }
    
    
    else if($interval->format('%d%m%y')=="000"){
       return $hour." Hours";
       }
    
    
    else if($interval->format('%m%y')=="00"){
       return $day." Days";
       }
    
    else if($interval->format('%y')=="0"){
       return $mon." Months";
       }
    
    else{
       return $year." Years";
       }
    
    }
    ?>
    

    "date.php"라고 가정하고 파일로 저장하십시오. 이 같은 다른 페이지에서 함수를 호출하십시오.

    <?php
     require('date.php');
     $mydate='2014-11-14 21:35:55';
     echo "The Difference between the server's date and $mydate is:<br> ";
     echo dateDiff($mydate);
    ?>
    

    물론 함수를 수정하여 두 값을 전달할 수 있습니다.

  10. ==============================

    10.

    분수 / 소수를 포함하여 일, 시간, 분 또는 초로 결과를 반환하는보다 보편적 인 버전입니다.

    function DateDiffInterval($sDate1, $sDate2, $sUnit='H') {
    //subtract $sDate2-$sDate1 and return the difference in $sUnit (Days,Hours,Minutes,Seconds)
        $nInterval = strtotime($sDate2) - strtotime($sDate1);
        if ($sUnit=='D') { // days
            $nInterval = $nInterval/60/60/24;
        } else if ($sUnit=='H') { // hours
            $nInterval = $nInterval/60/60;
        } else if ($sUnit=='M') { // minutes
            $nInterval = $nInterval/60;
        } else if ($sUnit=='S') { // seconds
        }
        return $nInterval;
    } //DateDiffInterval
    
  11. ==============================

    11.

    이것은 "xx times before"를 PHP> 5.2에서 표시 한 방법입니다. 여기에 DateTime 객체에 대한 자세한 정보가 있습니다.

    //Usage:
    $pubDate = $row['rssfeed']['pubDates']; // e.g. this could be like 'Sun, 10 Nov 2013 14:26:00 GMT'
    $diff = ago($pubDate);    // output: 23 hrs ago
    
    // Return the value of time different in "xx times ago" format
    function ago($timestamp)
    {
    
    $today = new DateTime(date('y-m-d h:m:s'));
    //$thatDay = new DateTime('Sun, 10 Nov 2013 14:26:00 GMT');
    $thatDay = new DateTime($timestamp);
    $dt = $today->diff($thatDay);
    
    if ($dt->y > 0)
    {
        $number = $dt->y;
        $unit = "year";
    }
    else if ($dt->m > 0)
    {
        $number = $dt->m;
        $unit = "month";
    }   
    else if ($dt->d > 0)
    {
        $number = $dt->d;
       $unit = "day";
    }
    else if ($dt->h > 0)
    {
        $number = $dt->h;
        $unit = "hour";
    }
    else if ($dt->i > 0)
    {
        $number = $dt->i;
        $unit = "minute";
    }
    else if ($dt->s > 0)
    {
        $number = $dt->s;
        $unit = "second";
    }
    
    $unit .= $number  > 1 ? "s" : "";
    
    $ret = $number." ".$unit." "."ago";
    return $ret;
    }
    
  12. ==============================

    12.

    이게 도움이 될 ....

    function get_time($date,$nosuffix=''){
        $datetime = new DateTime($date);
        $interval = date_create('now')->diff( $datetime );
        if(empty($nosuffix))$suffix = ( $interval->invert ? ' ago' : '' );
        else $suffix='';
        //return $interval->y;
        if($interval->y >=1)        {$count = date(VDATE, strtotime($date)); $text = '';}
        elseif($interval->m >=1)    {$count = date('M d', strtotime($date)); $text = '';}
        elseif($interval->d >=1)    {$count = $interval->d; $text = 'day';} 
        elseif($interval->h >=1)    {$count = $interval->h; $text = 'hour';}
        elseif($interval->i >=1)    {$count = $interval->i; $text = 'minute';}
        elseif($interval->s ==0)    {$count = 'Just Now'; $text = '';}
        else                        {$count = $interval->s; $text = 'second';}
        if(empty($text)) return '<i class="fa fa-clock-o"></i> '.$count;
        return '<i class="fa fa-clock-o"></i> '.$count.(($count ==1)?(" $text"):(" ${text}s")).' '.$suffix;     
    }
    
  13. from https://stackoverflow.com/questions/365191/how-to-get-time-difference-in-minutes-in-php by cc-by-sa and MIT lisence