8

13桁の数字があり、ミリ秒を含む日付と時刻を作成したい

サンプルコードはこのようなものですこれは私のphpスクリプトです

$mil = 1328910295939;
$seconds = $mil / 1000;
$showdate = date('Y:m:d H:i:s', $seconds) ;

echo "$showdate";

結果は次のようになります 2012:02:10 15:44:55.xxx ===> xxx は表示したい 3 桁のミリ秒です。

H:i:s の後に 3 桁のミリ秒を含める方法

私を助けてください.....

4

5 に答える 5

10

このようなものはどうですか?

$mil = 1328910295939;

function toTimestamp($milliseconds)
{
    $seconds = $milliseconds / 1000;
    $remainder = round($seconds - ($seconds >> 0), 3) * 1000;

    return date('Y:m:d H:i:s.', $seconds).$remainder;
}

echo toTimestamp($mil);

タダー!

それもかなり速いはずです。

また、これは出力です:2012:02:10 15:44:55.939-なぜあなたが使用していないのか-日付部分を区切るために私を打ち負かします。

于 2012-02-11T20:39:48.967 に答える
5

最後の 2 文字を削除するだけです。

substr(date('Y-m-d H:i:s.u',1328910295939), 0, -2)
于 2012-02-11T18:31:25.987 に答える
4

これを正確に行う関数を次に示します (切り捨てるのではなく、丸めることによって)。

function getTimestamp()
{
        $microtime = floatval(substr((string)microtime(), 1, 8));
        $rounded = round($microtime, 3);
        return date("Y-m-d H:i:s") . substr((string)$rounded, 1, strlen($rounded));
}

説明:

microtime() は、スペースで区切られた 1 つの文字列として 2 つの数値を返します。2 番目の数値は UNIX エポックからの秒数で、1 番目の数値は 2 番目の数値からのマイクロ秒数です。基本的に、最初の数値は 8 精度形式 (0.00000000) で表されるマイクロ秒の量であり、末尾の 0 は決して切り捨てられません。

これを 3 (0.00) の精度に丸め、先頭の 0 を切り捨て、それを実際のタイムスタンプに追加します。

何らかの理由で、u、マイクロ秒の php ドキュメントは実際にはサポートされていないようです。その方法を使用すると、毎回 0.000 になります。そこで、バックアップ ソリューションとして microtime() に頼りました。

于 2012-02-11T18:50:50.557 に答える
1
$t = 1328910295939;
echo date('Y-m-d H:i:s.', substr($t, 0, -3)) . substr($t, -3);

出力: 2012-02-10 16:44:55.939 (タイムゾーンによって異なります)

于 2012-02-11T21:28:30.617 に答える
0

これらの回答はすべて非常に複雑で面白かったので、質問者の元のコードを使用し、数値を文字列として扱わない、将来の子孫のためのさらに別の回答を次に示します。

$mil = 1328910295939;
$seconds = floor($mil / 1000);
$fraction = $mil % 1000;
$showdate = date('Y:m:d H:i:s',$seconds) . ".$fraction";

echo "$mil<br>
$seconds<br>
$fraction<br>
$showdate";

EST タイム ゾーンに設定されたサーバーで次を出力します。

1328910295939
1328910295
939
2012:02:10 16:44:55.939
于 2012-10-09T14:27:23.743 に答える