В строгом смысле вы не можете.
Это потому, что наименьшая единица времени для класса DateTime - секунда.
Если вам нужно измерение, содержащее миллисекунды, используйте microtime ()
Редактировать:
С другой стороны, если вы просто хотите получить интервал в миллисекундах между двумя ISO-8601 datetimes , тогда одним из возможных решений будет
function millisecsBetween($dateOne, $dateTwo, $abs = true) {
$func = $abs ? 'abs' : 'intval';
return $func(strtotime($dateOne) - strtotime($dateTwo)) * 1000;
}
Остерегайтесь того, что по умолчанию вышеуказанная функция возвращает абсолютную разницу.Если вы хотите узнать, является ли первая дата более ранней или нет, тогда установите для третьего аргумента значение 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);
В системах, где размер типа данных времени равен 32 битам, например, в Windows7 или более ранних версиях, millisecsBetween isподходит только для дат от 1970-01-01 00:00:00
до 2038-01-19 03:14:07
(см. Год 2038, проблема ).