web-dev-qa-db-ja.com

ミリ秒で現在のタイムスタンプを取得

PHP以下のようなミリ秒で現在のタイムスタンプを取得したい、JavaScriptではDate.now()を使用

1436030635348

私は以下のようなものを試しました:

$time = str_replace(".","",microtime(true)); 

しかし、いつかは正しく動作しません。 1桁または2桁少なく印刷するように。

10
Vishnu

Float値であるため、印刷できる桁数が少なくなります。したがって、_1234.0005_を取得した場合、その `.0005は実際には500マイクロ秒を意味します。 5の後のゼロは、まだフォーマットされていないfloat値であるため失われます。

関数microtimeは、システム呼び出しgettimeofday()に基づいていますが、これもマイクロ秒単位では正確ではありません。通常、10マイクロ秒の精度です。 Linux-gettimeofday()はマイクロ秒の解像度であることが保証されています も参照してください。

-編集-仕様がマイクロ秒からミリ秒に変更されたことがわかります。

整数として持っている浮動小数点値を取得するには、値を掛けることができます。 float値は秒を表します。 1000で乗算してミリ秒を取得するか、1,000,000で乗算してマイクロ秒を取得します。仕様ではミリ秒と記載されているため、1000を掛ける必要があります。10kでは1/10ms =100μsの精度が得られます。ミリ秒は、1000分の1秒です。マイクロ秒は100万分の1秒です。

要するに、時間を整数ミリ秒で取得するには、これを使用します:

_$milliseconds = round(microtime(true) * 1000);
_

注:デフォルトで時刻を文字列または浮動小数点として取得する理由があります。その理由は、32ビットシステムでは、PHPの整数も32ビットであり、ミリ秒やマイクロ秒を含むタイムスタンプを格納するのに十分な大きさではないためです。したがって、このソリューションは64ビットシステムでのみ有効です。

11
GolezTrol
$timeStampData = microtime();
list($msec, $sec) = explode(' ', $timeStampData);
$msec = round($msec * 1000);

$result = $sec . $msec;

このようなもの

ただし、js date.now()はMICROsecondsではなくMILLIsecondsで時刻を返すことに注意してください

1

PHPでマイクロ秒のタイムスタンプを取得するには、この関数を使用するだけでよいと思います。

_int microtime ( void )
_

次の link に示すように使用します。次のコードスニペットは、質問に役立つようにどのように変更したかを示しています。

_<?php

function microtime_microseconds()
{
     list($usec, $sec) = explode(" ", microtime());
     return round(($usec * 1000) + $sec);
}

$micro_time = microtime_microseconds();

echo $micro_time;

?>
_

また、microtime() PHP function)に関する参照については、このページをご覧になって読んでください PHPマニュアルページ

0
Randika Vishman