當前位置:首頁 » 編程語言 » php時間微妙

php時間微妙

發布時間: 2025-07-03 14:39:38

php毫秒遞增時間函數

你如果不用micotime(TRUE)來返回總微秒數的話,那麼返回的前半部分本來就是在1秒內的微秒值,這個本來就不是遞增的,因為你前後兩次調用可能不在同一秒中,比如第一次調用在第1.99秒,第二次調用在第2.01秒,你只要小數點後的部分顯然一個是0.99一個0.01不能保證遞增。

這樣除非你的CPU足夠快能把這整個循環全部在一秒內算完(你的循環可是100000誒,php效率又低,沒幾個CPU能這么快的算完吧),否則肯定會出現不是遞增的情況。

你的程序應該是想獲得帶毫秒的時刻數,但是你犯了一個簡單的錯誤:你小數點前面的時間是在最開始獲取的,你小數點後面的時間是在循環內部每次獲取的,把兩個不同時刻的時間拼起來顯然可能會出問題。比如,即使你的循環執行了100秒,你顯示出來的時間前部分還是同一秒內,但就像我上面分析的,小數點後面的時間已經輪換了100次了,顯然就會出現你說的不遞增的情況。

解決辦法很簡單,不應該把兩個不同時候獲取的時間拼起來,而應該統一由microtime獲取:
<?php
for($i=0;$i<10000;$i++)
{
$ret = explode(' ', microtime());
// 把$date的獲取放在這里,而且用的是microtime返回的時間戳來獲取,保持一致
$date = date('Y-m-d H:i:s', (int)$ret[1]);
echo $date.".".(int)((float)$ret[0]*1000000) ;
echo "<br/>";
}
?>

這樣別說是500的循環,只要你的電腦能計算,任意數量循環都能保證是准確的。

⑵ unix-時間戳-php生成javascript風格時間戳

在PHP中,生成與JavaScript風格Unix時間戳相對應的方法是使用`round(microtime(true) * 1000)`函數。這使得PHP生成的時間戳與JavaScript的`new Date().getTime()`函數返回的13位精確到毫秒的時間戳一致。

具體實現如下:運行`round(microtime(true) * 1000)`後,PHP會返回一個13位的Unix時間戳,且沒有任何多餘的輸出,完全符合問題要求。

值得注意的是,這個解決方案直接利用了PHP的`microtime(true)`函數來獲取當前時間的微秒級別精度,然後再將結果與1000相乘,從而生成13位的時間戳。這種做法避免了使用`time()`函數直接乘以1000,因為後者僅提供10位的精度,且沒有考慮到微秒級別的額外信息。

因此,使用`round(microtime(true) * 1000)`函數實現PHP生成JavaScript風格Unix時間戳的方法,既滿足了要求的精度和格式,也避免了不必要的輸出,是實現這一目標的高效解決方案。

⑶ php里的時間戳是以秒為單位嗎

是的。

⑷ php microtime獲取浮點的時間戳

一直以來用這個函數獲取:
復制代碼
代碼如下:
function
microtime_float(){
list($usec,
$sec)
=
explode("
",
microtime());
return
((float)$usec
+
(float)$sec);
}
看到別人的源碼中用microtime(true),查了下手冊,原來從PHP
5.0.0
開始,microtime增加了這個參數。
引用
復制代碼
代碼如下:
mixed
microtime
(
[bool
get_as_float]
)
microtime()
當前
Unix
時間戳以及微秒數。本函數僅在支持
gettimeofday()
系統調用的操作系統下可用。
如果調用時不帶可選參數,本函數以
"msec
sec"
的格式返回一個字元串,其中
sec
是自
Unix
紀元(0:00:00
January
1,
1970
GMT)起到現在的秒數,msec
是微秒部分。字元串的兩部分都是以秒為單位返回的。
如果給出了
get_as_float
參數並且其值等價於
TRUE,microtime()
將返回一個浮點數。
注意:
get_as_float
參數是
PHP
5.0.0
新加的。
如果程序肯定在PHP5以上的環境運行,那麼就直接使用microtime(true)吧,比使用microtime_float函數至少快兩倍。以下是我簡單測試的程序代碼。
復制代碼
代碼如下:
<?php
function
microtime_float3(){
return
microtime(true);
}
function
microtime_float2(){
if(
PHP_VERSION
>
5){
return
microtime(true);
}else{
list($usec,
$sec)
=
explode("
",
microtime());
return
((float)$usec
+
(float)$sec);
}
}
function
microtime_float(){
list($usec,
$sec)
=
explode("
",
microtime());
return
((float)$usec
+
(float)$sec);
}
function
runtime($t1){
return
number_format((microtime_float()
-
$t1)*1000,
4).'ms';
}
$t1
=
microtime_float();
for($i=0;$i<10000;$i++){
microtime_float();
}
echo
"microtime_float=====";
echo
runtime($t1).'<br>';
$t1
=
microtime(true);
for($i=0;$i<10000;$i++){
microtime(true);
}
echo
"microtime_true=====";
echo
runtime($t1).'<br>';
$t1
=
microtime(true);
for($i=0;$i<10000;$i++){
microtime_float2();
}
echo
"microtime_float2=====";
echo
runtime($t1).'<br>';
$t1
=
microtime(true);
for($i=0;$i<10000;$i++){
microtime_float3();
}
echo
"microtime_float3=====";
echo
runtime($t1).'<br>';
?>
本機winxp運行結果:
microtime_float=====109.5631ms
microtime_true=====38.8160ms
microtime_float2=====52.7902ms
microtime_float3=====45.0699ms
Linux上運行結果:
microtime_float=====47.2510ms
microtime_true=====9.2051ms
microtime_float2=====16.3319ms
microtime_float3=====12.2800ms
在PHP5的環境下,直接使用microtime(true);顯然是最快的。microtime_float2和microtime_float3都可以在不改變原有程序的情況下,直接修改函數內容來實現性能的輕微提升。microtime_float2可以做為兼容舊版本的寫法。

⑸ php時間戳time是秒還是毫秒

  1. 秒,time()函數返回的是 當前時間的Unix時間戳格式,即1970年1月1日0:00:00到當前的秒數。如果你需要得到當前時間的微秒數 可以使用microtime(true);方法。

  2. //獲取毫秒的時間戳
    $time=explode("",microtime());
    $time=$time[1].($time[0]*1000);
    $time2=explode(".",$time);
    $time=$time2[0];
    通過time函數獲取的時間戳是以秒為單位
    返回自從 Unix 紀元(格林威治時間 1970 年 1 月 1 日 00:00:00)到當前時間的秒數。
熱點內容
家用電腦和網吧電腦做成伺服器 發布:2025-07-03 18:22:07 瀏覽:855
jsp刷新緩存 發布:2025-07-03 18:18:06 瀏覽:923
機房伺服器啟動不起來是什麼原因 發布:2025-07-03 18:18:02 瀏覽:444
腳本召喚坐騎攻略 發布:2025-07-03 18:17:59 瀏覽:229
皓影智享加裝哪些配置好 發布:2025-07-03 17:54:44 瀏覽:615
mongodbjava 發布:2025-07-03 17:54:31 瀏覽:99
外鍵約束sql語句 發布:2025-07-03 17:51:04 瀏覽:456
struts2上傳文件大小限制 發布:2025-07-03 17:51:01 瀏覽:521
賓士導航什麼配置 發布:2025-07-03 17:46:42 瀏覽:743
伺服器2012r2遠程服務怎麼開啟 發布:2025-07-03 17:46:01 瀏覽:455