PHP 時間函數time、date和microtime的區別


一、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) 輸出不包含小數部分的浮點數

       

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM