一、time、date 和 microtime函數
time----返回當前的 Unix 時間戳
date----格式化一個本地時間/日期
microtime----返回當前的 Unix 時間戳和微秒數
二、三者的區別
1.time() 函數
time() 函數返回的是從 Unix 紀元(格林威治1970年1月1日00:00:00)到當前時間的秒數,如下
<?php echo time(); -------------------- 輸出結果 1546501413
2.date() 函數
date() 返回將整數 timestamp 按照給定的格式字符串而產生的字符串,如下
<?php echo date("Y-m-d H:i:s",time()); --------------------------------------- 輸出結果 2019-01-03 07:44:57
3.microtime() 函數
microtime() 返回當前 Unix 時間戳和微秒數。如果調用時不帶可選參數,該函數以 "msec sec" 的格式返回一個字符串,其中
sec 是從 Unix 紀元(格林威治1970年1月1日00:00:00)起到當前時間的秒數,msec 是微秒部分這一點需要注意下有的文章上寫
的是毫秒可以參考 PHP 手冊,字符串的兩部分都是以秒為單位返回的。如果可選參數為 true,microtime(true),返回的值是 sec
+ msec 的和,保留四位小數,如下:
<?php list($msec, $sec) = explode(" ", microtime()); echo $msec; echo "<br />"; echo $sec; --------------------------------------- 輸出結果 0.30716500<br />1546501702
time() 函數多用於記錄當前時間,date() 函數用於格式化一個時間戳,microtime() 函數可用於計算時間差,比如常用統計一個程序
的運行時間等
4.通過 microtime() 函數獲取毫秒時間戳
#Example 01 獲取時間差,毫秒級
<?php function get_subtraction() { $t1 = microtime(true); $t2 = microtime(true); echo (($t2 - $t1)*1000).'ms'; } get_subtraction(); --------------------------------------- 輸出結果: 0.0019073486328125ms
#Example 02 返回時間戳的毫秒部分
<?php 2 3 function get_millisecond() { 4 list($msec, $sec) = explode(" ", microtime()); 5 $msec = round($msec * 1000); 6 echo $msec; 7 } 8 9 get_millisecond(); ------------------------------------------------------------ 輸出結果: 535
#Example 03 返回當前 Unix 時間戳和微秒數(用秒的小數表示)浮點數表示,常用來計算代碼執行時間
<?php 2 3 function microtime_float() { 4 list($msec, $sec) = explode(" ", microtime()); 5 echo (float)$msec + (float)$sec; 6 } 7 8 microtime_float();
上面這段代碼的結果和 microtime(true) 相等
#Example 04 獲取毫秒級別時間戳
<?php 2 3 list($msec, $sec) = explode(" ", microtime()); 4 $msectime = (float)sprintf("%.0f", (floatval($msec) + floatval($sec)) * 1000); 5 6 echo $mesctime; ------------------------------------ 輸出結果: 1546509149102
floatval() 函數獲取變量的浮點值,doubleval() 函數是它的別名,具體使用可以參考 PHP 手冊
sprintf("%.0f",$num) 輸出不包含小數部分的浮點數