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) 输出不包含小数部分的浮点数