用PHP获取时间刻度

时间:2015-06-13 10:23:44

标签: php microtime

在C#

中考虑这一行代码
ordernumber.Value = DateTime.Now.Ticks.ToString();

如何在PHP中获得ordernumber.Value

$ordernumberValue = microtime(); //?

我尝试了这个

echo microtime(true) * 10000000;

但是得到结果string.length是不同的。 长度比C#短。

3 个答案:

答案 0 :(得分:4)

来自.NET文档:

  

DateTime.Ticks Property

     

此属性的值表示自公元1月1日午夜12:00:00(公历1月1日0:00:00到公历)以来经过的100纳秒间隔的数量,代表DateTime.MinValue。它不包括可归因于闰秒的刻度数。

在PHP中,这简单地实现为time()

  

时间

     

返回自Unix Epoch(1970年1月1日00:00:00 GMT)以来的秒数测量的当前时间。

microtime()类似地返回小数点后的秒和微秒的时间,因此它具有更高的精度。由于一些过时的原因,默认值是一个字符串,但是如果你传递true作为第一个参数,你将得到一个漂亮的浮点数:

rr-@burza:~$ php -r 'echo microtime(true);'
1434193280.3929%    

所以你要做的就是将time()microtime()返回的值按常数因子缩放。

根据维基百科,纳秒等于1000皮秒或1/1000微秒,或1/1000000000秒。因此,100纳秒将意味着100/1000000000微秒,即一个.NET tick = 1/10000000秒,即一秒= 10000000 .NET滴答。因此,您需要将time()microtime()返回的值乘以10000000,如下所示:

microtime(true) * 10000000

答案 1 :(得分:1)

我不确定这是不是你在寻找: -

$mt = microtime(true);

$mt =  $mt*1000; //microsecs
$ticks = (string)$mt*10; //100 Nanosecs
echo $ticks; //14341946614384

现在主要区别是Ticks是自0001年1月1日午夜12:00:00起100纳秒,而自1970年1月1日起将产生100纳秒

答案 2 :(得分:1)

一个刻度是1/10000000秒。

此代码将当前的microtime转换为" ticks"数:

list($usec, $sec) = explode(" ", microtime());
$ticks = (int)($sec*10000000+$usec*10000000);