How to get millisecond between two dateTime obj?

前端 未结 5 454
南方客
南方客 2020-12-11 18:06

How to get millisecond between two DateTime objects?

$date = new DateTime();
$date2 = new DateTime(\"1990-08-07 08:44\");

I t

5条回答
  •  庸人自扰
    2020-12-11 18:44

    In the strict sense, you can't.

    It's because the smallest unit of time for the DateTime class is a second.

    If you need a measurement containing milliseconds then use microtime()


    Edit:

    On the other hand if you simply want to get the interval in milliseconds between two ISO-8601 datetimes then one possible solution would be

    function millisecsBetween($dateOne, $dateTwo, $abs = true) {
        $func = $abs ? 'abs' : 'intval';
        return $func(strtotime($dateOne) - strtotime($dateTwo)) * 1000;
    }
    

    Beware that by default the above function returns absolute difference. If you want to know whether the first date is earlier or not then set the third argument to false.

    // Outputs 60000
    echo millisecsBetween("2010-10-26 20:30", "2010-10-26 20:31");
    
    // Outputs -60000 indicating that the first argument is an earlier date
    echo millisecsBetween("2010-10-26 20:30", "2010-10-26 20:31", false);
    

    On systems where the size of time datatype is 32 bits, such as Windows7 or earlier, millisecsBetween is only good for dates between 1970-01-01 00:00:00 and 2038-01-19 03:14:07 (see Year 2038 problem).

提交回复
热议问题