En el sentido estricto, no puedes
Se debe a que la unidad de tiempo más pequeña para la clase DateTime es un segundo.
Si necesita una medición que contiene milisegundos después utilice microtime()
Editar:
Por otro lado si simplemente desea obtener el intervalo en milisegundos entre dos ISO-8601 datetimes entonces una solución posible sería
function millisecsBetween($dateOne, $dateTwo, $abs = true) {
$func = $abs ? 'abs' : 'intval';
return $func(strtotime($dateOne) - strtotime($dateTwo)) * 1000;
}
Ten cuidado con eso Por defecto, la función anterior devuelve la diferencia absoluta. Si desea saber si la primera fecha es anterior o no, establezca el tercer argumento en falso.
// 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);
En los sistemas donde el tamaño del tipo de datos de tiempo es de 32 bits, tales como Windows7 o anterior, millisecsBetween sólo es bueno para fechas entre 1970-01-01 00:00:00
y 2038-01-19 03:14:07
(véase Year 2038 problem).
-1 Lol .. sí, segundos tiempos 1000 es milisegundos. – Fosco
Probablemente podría haber mencionado lo que mencionó Saul :) – BudgieInWA
+1 ya que este es realmente el único método (en concepto al menos) para tomar dos fechas de segunda precisión y obtener el número de milisegundos entre ellas ... – ircmaxell