millis milisegundos example current php microtime

milisegundos - time in millis php



Cómo convertir microtime() a HH: MM: SS: UU (3)

Estaba midiendo algunas solicitudes de rizo y usé microtime(true) . La salida del ejemplo sería 3.1745569706

Esto es 3.1745569706 segundos. Quiero convertir eso a un formato algo más legible, digamos 00:00:03:17455 (HORAS: MINUTOS: SEGUNDOS: MILLISECONDS)

$maxWaitTime = ''3.1745569706''; echo gmdate("H:i:s.u", $maxWaitTime); // which returns 00:00:01.000000 echo date("H:i:s.u" , $maxWaitTime) // which returns 18:00:01.000000

Eso se ve mal. No estoy muy seguro de lo que me estoy perdiendo aquí.

¿Cómo convierto microtime () a HH: MM: SS: UU?


Del artículo de PHP.net en date() que es similar a gmdate() , excepto que la hora se devuelve en GMT:

Dado que esta función solo acepta marcas de tiempo enteras, el carácter de formato u solo es útil cuando se utiliza la función date_format () con marcas de tiempo basadas en el usuario creadas con date_create ().

Use algo como esto en su lugar:

list($usec, $sec) = explode('' '', microtime()); //split the microtime on space //with two tokens $usec and $sec $usec = str_replace("0.", ".", $usec); //remove the leading ''0.'' from usec print date(''H:i:s'', $sec) . $usec; //appends the decimal portion of seconds

Que imprime: 00:00:03.1745569706

Si lo desea, puede usar round() para redondear las $usec var aún más.

Si usas microtime(true) usa esto en su lugar:

list($sec, $usec) = explode(''.'', microtime(true)); //split the microtime on .


Suponiendo que uno realmente se preocupa por los microsegundos, lo que es bastante raro, entonces no se debe usar ninguna representación que implique flotantes.

En su lugar, use gettimeofday () que devolverá una matriz asociativa que contiene los segundos y microsegundos como enteros.

$g1 = gettimeofday(); # execute your process here $g2 = gettimeofday(); $borrow = $g2[''usec''] < $g1[''usec''] ; $seconds = $g2[''sec''] - $g1[''sec''] - $borrow ; $micros = $borrow*1000000 + $g2[''usec''] - $g1[''usec''] ; $delta = gmdate( ''H:i:s.'', $seconds ).sprintf( ''%06d'', $micros );


<?php function format_period($seconds_input) { $hours = (int)($minutes = (int)($seconds = (int)($milliseconds = (int)($seconds_input * 1000)) / 1000) / 60) / 60; return $hours.'':''.($minutes%60).'':''.($seconds%60).(($milliseconds===0)?'''':''.''.rtrim($milliseconds%1000, ''0'')); } echo format_period(3.1745569706);

SALIDA

0:0:3.174