又到了学习php函数的时间了,这一次我为了简单的计算程序耗时,就用了一下microtime函数,不过它和我们平常用的 time函数不一样,它会返回一个字符串! 所以我们要理解这个字符串到底是什么意思!
首先我们想一下,microtime的生成与什么有关,会不会与时区有关呢? 我们要选一个格林威志时间 和我们的本地时间做一个比较。
1. 1 修改时区对microtime的影响
<?php
ini_set("date.timezone","Etc/GMT"); // 格林威志时间
$gmtTime = microtime();
ini_set("date.timezone", "Asia/Shanghai"); // 北京-上海时间
$gmt8Time = microtime();
var_dump($gmtTime,$gmt8Time);
exit;
结果为
string(21) “0.88501200 1458222892”
string(21) “0.88504000 1458222892”
看得出来在,前一个字符串里面有 2800的差距.(经过测试后发现,该值是不固定的)
目前还无法得出修改时区对microtime是否有影响,那么我们测试一下time()函数会不会有影响。
1.2 修改时区对time的影响
<?php
ini_set("date.timezone","Etc/GMT"); // 格林威志时间
$gmtTime = time();
ini_set("date.timezone", "Asia/Shanghai");
$gmt8Time = time();
var_dump($gmtTime,$gmt8Time);
exit;
结果为
int(1458223153)
int(1458223153)
小结: 这里我们可以大概知道,不管事time还是microtime函数,它们生成的是一个GMT+0 的时间戳,不会因为设置了时区而改变,通过时间戳 + 设置的时区获取本地时间。 而microtime 的后半部分表示的是秒的时间戳,前半部分则表示的是微秒。
2.1 介绍microtime()函数
microtime函数支持一个bool参数,如果传入false(默认),表示返回一个字符串,微秒与秒用空格分隔.如果传入true,那么就会返回一个float类型,保留4为小数
<?php
var_dump(microtime(),microtime(true));
exit;
结果为
string(21) “0.41481300 1458223669”
float(1458223669.4148)
2.2 读取微秒数转换为double类型 (实际效果与microtime(true)一致)
<?php
$gmtTime = microtime();
list($microSeconds, $seconds) = explode(" ",$gmtTime);
echo (float)$microSeconds + $seconds;
exit;
3. 介绍time()函数
<?php
echo time();
可以使用该函数获取当前的时间戳,符合数据库的timestamp类型格式。
总结: time()函数和 microtime()函数出现在项目里是非常常见的。所以我们也要认真的了解这两个函数的作用。