当前位置:首页 » 编程语言 » 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-04 04:04:19 浏览:67
vs连sql数据库 发布:2025-07-04 03:55:49 浏览:523
乐橙如何提供密码 发布:2025-07-04 03:55:11 浏览:135
荣耀服务器地址是什么 发布:2025-07-04 03:55:04 浏览:319
手机网页连接不上服务器如何解决 发布:2025-07-04 03:29:57 浏览:921
计算机多级存储系统 发布:2025-07-04 03:24:22 浏览:283
流控搭脚本 发布:2025-07-04 03:05:59 浏览:112
编程的引号 发布:2025-07-04 03:01:09 浏览:788
百度云不能上传文件 发布:2025-07-04 02:59:28 浏览:666
皇冠哪个配置上驾驶座前后移动 发布:2025-07-04 02:45:56 浏览:92