欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

php如何获取微秒 毫秒 不能获取纳秒 有大用 有大大用

本文实例讲述了PHP实现获取毫秒时间戳的方法。分享给大家供大家参考,具体如下:

PHP获取毫秒时间戳,利用microtime()函数

php本身没有提供返回毫秒数的函数,但提供了一个microtime()函数,借助此函数,可以很容易定义一个返回毫秒数的函数。

php的毫秒是没有默认函数的,但提供了一个microtime()函数,该函数返回包含两个元素,一个是秒数,一个是小数表示的毫秒数,借助此函数,可以很容易定义一个返回毫秒数的函数,例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
function getMillisecond() {
  list($s1, $s2) = explode(' ', microtime());
  return (float)sprintf('%.0f', (floatval($s1) + floatval($s2)) * 1000);
}
/*
* 获取时间差,毫秒级
*/
function get_subtraction()
{
  $t1 = microtime(true);
  $t2 = microtime(true);
  return (($t2-$t1)*1000).'ms';
}
/*
* microsecond 微秒   millisecond 毫秒
*返回时间戳的毫秒数部分
*/
function get_millisecond()
{
  list($usec, $sec) = explode(" ", microtime());
  $msec=round($usec*1000);
  return $msec;
}
/*
*
*返回字符串的毫秒数时间戳
*/
function get_total_millisecond()
{
  $time = explode (" ", microtime () );
  $time = $time [1] . ($time [0] * 1000);
  $time2 = explode ( ".", $time );
  $time = $time2 [0];
  return $time;
}
/*
*
*返回当前 Unix 时间戳和微秒数(用秒的小数表示)浮点数表示,常用来计算代码段执行时间
*/
function microtime_float()
{
  list($usec, $sec) = explode(" ", microtime());
  return ((float)$usec + (float)$sec);
}
$millisecond = get_millisecond();
$millisecond = str_pad($millisecond,3,'0',STR_PAD_RIGHT);
echo date("YmdHis").$millisecond;

运行结果:

20190301013407194

需要注意,在32位系统中php的int最大值远远小于毫秒数,所以不能使用int类型,而php中没有long类型,所以只好使用浮点数来表示。由于使用了浮点数,如果精度设置不对,使用echo显示获取的结果时可能会不正确,要想看到输出正确的结果,精度设置不能低于13位。

来自 https://www.jb51.net/article/157142.htm



实例

返回当前 Unix 时间戳的微秒数:

<?php
echo(microtime());
?>

运行实例 »

定义和用法

microtime() 函数返回当前 Unix 时间戳的微秒数。

语法

microtime(get_as_float);


参数描述
get_as_float可选。当设置为 TRUE 时,规定函数应该返回一个浮点数,否则返回一个字符串。默认为 FALSE。

技术细节

返回值:默认返回字符串 "microsec sec" ,其中 sec 为自 Unix 纪元(0:00:00 January 1, 1970 GMT)起的秒数,microsec 为微秒部分。如果 get_as_float 参数设置为 TRUE,则返回一个浮点数,表示自 Unix 纪元起精确到微秒的以秒为单位的当前时间。
PHP 版本:4+
更新日志:PHP 5.0.0:新增 get_as_float 参数。


来自  https://www.runoob.com/php/func-date-microtime.html


PHP获取毫秒和微秒

这几个概念的换算关系是:


1秒(second) = 1000毫秒(millisecond) = 1000,000微秒(microsecond)

1

PHP的microtime()函数可以获取到微秒和毫秒数,但是和time() 函数不同,获取到的不是int类型,而是字符串,也可以设置get_as_float 参数为true 返回浮点数(单位为秒)


返回字符串

官方文档给的例子:


<?php

/**

 * Simple function to replicate PHP 5 behaviour

 */

function microtime_float()

{

    list($usec, $sec) = explode(" ", microtime());

    return ((float)$usec + (float)$sec);

}


$time_start = microtime_float();


// Sleep for a while

usleep(100); //暂停100微秒


$time_end = microtime_float();

$time = $time_end - $time_start;


echo "Did nothing in $time seconds\n";


//输出为

//Did nothing in 0.00037193298339844 seconds

//大概用了371微秒


?>


返回浮点数

这是PHP5开始有的特性


$start = microtime(true);

echo $start."\n";

usleep(300);

$end = microtime(true);

echo $end;


/*

输出为

1516631226.7536

1516631226.7559

单位为秒

*/

————————————————

版权声明:本文为CSDN博主「翔宇的博客」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/cxymrzero/article/details/79133245

来自  https://blog.csdn.net/cxymrzero/article/details/79133245


普通分类: