복붙노트

주어진 날짜와 오늘 비교

PHP

주어진 날짜와 오늘 비교

나는 다음과 같다.

$var = "2010-01-21 00:00:00.0"

이 날짜를 오늘 날짜와 비교하고 싶습니다 (즉,이 $ var가 오늘 이전인지 오늘인지 등을 알고 싶습니다).

어떤 기능을 사용해야합니까?

해결법

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

    1.

    strtotime($var);
    

    시간 값으로 변환합니다.

    time() - strtotime($var);
    

    $ var 이후 초를 알려줍니다.

    if((time()-(60*60*24)) < strtotime($var))
    

    $ var가 마지막 날에 있었는지 확인합니다.

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

    2.이 형식은 표준 문자열 비교에 완벽하게 적합합니다.

    이 형식은 표준 문자열 비교에 완벽하게 적합합니다.

    if (date1 > date2)
    

    이 형식으로 오늘 날짜를 얻으려면 : date ( "Y-m-d H : i : s")를 사용하면됩니다.

    그래서:

    $today = date("Y-m-d H:i:s");
    $date = "2010-01-21 00:00:00";
    
    if ($date < $today) {
    

    그것은 그 형식의 아름다움입니다 : 그것은 훌륭하게 명령합니다. 물론, 정확한 상황에 따라 효율성이 떨어질 수 있지만 훨씬 편리하고 코드 유지 관리가 더 쉬울 수도 있습니다. 실제로 판단을 내리기 위해서는 더 많은 것을 알아야합니다.

    올바른 시간대는 예를 들어,

    date_default_timezone_set('America/New_York');
    

    사용 가능한 PHP 시간대를 보려면 여기를 클릭하십시오.

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

    3.여기 있습니다 :

    여기 있습니다 :

    function isToday($time) // midnight second
    {
        return (strtotime($time) === strtotime('today'));
    }
    
    isToday('2010-01-22 00:00:00.0'); // true
    

    또한, 몇 가지 더 많은 도우미 기능 :

    function isPast($time)
    {
        return (strtotime($time) < time());
    }
    
    function isFuture($time)
    {
        return (strtotime($time) > time());
    }
    
  4. ==============================

    4.BoBby Jack을 완료하려면 PHP 5.2.2 이상이있는 경우 DateTime OBject를 사용하십시오.

    BoBby Jack을 완료하려면 PHP 5.2.2 이상이있는 경우 DateTime OBject를 사용하십시오.

    if(new DateTime() > new DateTime($var)){
        // $var is before today so use it
    
    }
    
  5. ==============================

    5.DateTime 클래스를 사용할 수 있습니다.

    DateTime 클래스를 사용할 수 있습니다.

    $past   = new DateTime("2010-01-01 00:00:00");
    $now    = new DateTime();
    $future = new DateTime("2020-01-01 00:00:00");
    

    비교 연산자 작동 * :

    var_dump($past   < $now);         // bool(true)
    var_dump($future < $now);         // bool(false)
    
    var_dump($now == $past);          // bool(false)
    var_dump($now == new DateTime()); // bool(true)
    var_dump($now == $future);        // bool(false)
    
    var_dump($past   > $now);         // bool(false)
    var_dump($future > $now);         // bool(true)
    

    DateTime 객체에서 타임 스탬프 값을 가져 와서 비교할 수도 있습니다.

    var_dump($past  ->getTimestamp());                        // int(1262286000)
    var_dump($now   ->getTimestamp());                        // int(1431686228)
    var_dump($future->getTimestamp());                        // int(1577818800)
    var_dump($past  ->getTimestamp() < $now->getTimestamp()); // bool(true)
    var_dump($future->getTimestamp() > $now->getTimestamp()); // bool(true)
    

    * ===는 동일한 날짜를 나타내는 경우에도 두 개의 다른 DateTime 객체를 비교할 때 false를 반환합니다.

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

    6.

    $toBeComparedDate = '2014-08-12';
    $today = (new DateTime())->format('Y-m-d'); //use format whatever you are using
    $expiry = (new DateTime($toBeComparedDate))->format('Y-m-d');
    
    var_dump(strtotime($today) > strtotime($expiry)); //false or true
    
  7. ==============================

    7.몇 년 후, 나는 바비 잭 (Bobby Jack)의 지난 24 시간 관찰 결과가 오늘이 아니라고 !!! 그리고 나는 그 대답이 너무 많이 upvoted ... 놀랐습니다

    몇 년 후, 나는 바비 잭 (Bobby Jack)의 지난 24 시간 관찰 결과가 오늘이 아니라고 !!! 그리고 나는 그 대답이 너무 많이 upvoted ... 놀랐습니다

    특정 날짜가 다른 날짜보다 작거나 같거나 큰지 비교하려면 먼저 해당 날짜를 시작으로 낮추어야합니다. 다시 말해, 두 날짜 모두 같은 00:00:00 시간에 대해 이야기하고 있는지 확인하십시오. 이것은 간단하고 우아하게 다음과 같이 할 수 있습니다 :

    strtotime("today") <=> strtotime($var)
    

    $ var에 OP가 지정된 것과 같이 00:00:00에 시간 부분이 있으면.

    <=> 바꾸기 (PHP 7에서 이와 같이 유지)

    또한, 분명히, 우리는 둘 다 동일한 시간대에 대해 이야기하고 있습니다. 지원되는 시간대 목록

  8. ==============================

    8.내 경험에 근거하여주의를 기울여야하며, 목적이 날짜 만 포함하는 경우 타임 스탬프를 포함해야합니다. 예를 들어 오늘은 "2016-11-09"입니다. 타임 스탬프가 포함 된 비교는 여기에서 논리를 무효화합니다. 예,

    내 경험에 근거하여주의를 기울여야하며, 목적이 날짜 만 포함하는 경우 타임 스탬프를 포함해야합니다. 예를 들어 오늘은 "2016-11-09"입니다. 타임 스탬프가 포함 된 비교는 여기에서 논리를 무효화합니다. 예,

    //  input
    $var = "2016-11-09 00:00:00.0";
    
    //  check if date is today or in the future
    if ( time() <= strtotime($var) ) 
    {
        //  This seems right, but if it's ONLY date you are after
        //  then the code might treat $var as past depending on
        //  the time.
    }
    

    위의 코드는 옳은 것처럼 보이지만, 비교할 날짜 만있는 경우 위의 코드는 올바른 논리가 아닙니다. 왜? 왜냐하면, time ()과 strtotime ()은 timestamp를 제공하기 때문이다. 즉, 비록 두 날짜가 같은 날이지만, 시간의 차이가 중요합니다. 아래 예제를 고려하십시오.

    //  plain date string
    $input = "2016-11-09";
    

    입력이 일반 날짜 문자열이기 때문에 $ input에서 strtotime ()을 사용하는 것은 2016-11-09 자정이라고 가정합니다. 그래서, 자정 이후 언제든지 () 실행 시간은 같은 날에 $ 입력을 항상 과거로 취급합니다.

    이 문제를 해결하려면 다음과 같이 간단히 코딩하면됩니다.

    if (date("Y-m-d") <= $input)
    {
        echo "Input date is equal to or greater than today.";
    }
    
  9. ==============================

    9.

    $date1=date_create("2014-07-02");
    $date2=date_create("2013-12-12");
    $diff=date_diff($date1,$date2);
    

    (w3schools 예제, 완벽하게 작동합니다)

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

    10.다른 유용한 예제는 간단한 PHP 클래스가 될 수 있습니다.

    다른 유용한 예제는 간단한 PHP 클래스가 될 수 있습니다.

    비교 기능뿐만 아니라 많은 방법을 제공합니다.

    예 :

    $date = new simpleDate();
    echo $date->now()->compare('2010-01-21 00:00:00')->isBefore();
    

    튜토리얼 페이지에는 많은 예제가 있습니다. 여기를 클릭하십시오.

  11. ==============================

    11.Josua의 w3schools 응답 확대 :

    Josua의 w3schools 응답 확대 :

    //create objects for the dates to compare
    $date1=date_create($someDate);
    $date2=date_create(date("Y-m-d"));
    $diff=date_diff($date1,$date2);
    //now convert the $diff object to type integer
    $intDiff = $diff->format("%R%a");
    $intDiff = intval($intDiff);
    //now compare the two dates
    if ($intDiff > 0)  {echo '$date1 is in the past';}
    else {echo 'date1 is today or in the future';}
    

    이게 도움이 되길 바란다. stackoverflow 내 첫 게시물!

  12. from https://stackoverflow.com/questions/2113940/compare-given-date-with-today by cc-by-sa and MIT license