2012-02-11 8 views

答えて

6

どうやってこのようになりますか?

$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 - なぜあなたが使用していないのですか - 日付部分を区切るために私を打ち負かします。

+0

ありがとう.....素晴らしい仕事。インターネットで1週間検索しているiamには解決策がないため、最高です。 – Smith

+0

こんにちはウェストリー私はまだ問題を抱えていた時間時間は2時間速かった...例22:07:45.434時間は20になるはずです。 – Smith

+0

これはサーバーの問題です。タイムゾーンを設定する必要があります。 – Westie

5

ちょうど最後の2つの文字を切り落とす.....私を助けてください:

substr(date('Y-m-d H:i:s.u',1328910295939), 0, -2) 
+0

が、これはevalutes "2025年12月10日22:17:55.0000" へ(PHP 5.3.6 Ubuntuで) – iblue

+0

それでもまだ動作していません..私はこれで私を凍結する助けてください。 – Smith

+0

これは私のPHPスクリプトです $ mil = 1328910295939; $秒= $ mil/1000; $ showdate =日付( 'Y:m:d H:i:s'、$秒); echo "$ showdate"; 結果は、この2012年のようなものです:02:10午後03時44分55秒 とどのようにHの後に3桁のmilisecondに含める:I:S – Smith

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)); 
} 

Expla国:

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

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

なぜなら、マイクロ秒のPHPドキュメントは実際にはサポートされていないようです。私はその方法を使うたびに0.000を得る。だから私はバックアップソリューションとしてmicrotime()に頼った。

+0

例のコードは次のようである、これは私のPHPスクリプト $ミルであります= 1328910295939; $秒= $ mil/1000; $ showdate =日付( 'Y:m:d H:i:s'、$秒); echo "$ showdate"; 結果は次のようになります2012:02:10 15:44:55.xxx ===> xxxは、表示したい3桁のミリ秒です。 – Smith

+1

'u'形式は、マイクロ秒(例えば、' DateTime'インスタンス)を含む日付に対してサポートされています。 'date()'関数は整数のタイムスタンプでしか機能しないので、分数秒は分かりません。 – salathe

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(それはタイムゾーンによって異なります)

0

これらの答えは、その複雑さにすべての非常に面白いだったので、ここではアスカーの元のコードを使用し、doesnの将来後世のためにさらに別の答えが」です数字を文字列として扱う。

$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