PHP Equivalent of C# ticks
本文关键字:ticks of Equivalent PHP | 更新日期: 2023-09-27 18:03:17
我目前正在转换一个ASP。NET c#应用到PHP。该服务使用DateTime Ticks,我想知道PHP中是否有等效的。
如果不是,我计算时间跨度的最佳方法是什么?
使用microtime(true)
请注意以下内容,直接摘自PHP手册
默认情况下,microtime()返回一个"msec sec"形式的字符串,其中SEC是当前时间,以秒数来衡量Unix纪元(0:00:00 January 1, 1970 GMT), msec是时间的序号自SEC以来经过的微秒数,单位为秒。
如果get_as_float被设置为TRUE,那么microtime()返回一个float,它表示自Unix纪元以来以秒为单位的当前时间精确到微秒。
[Edit:我后来看到DateTime ticks也非常类似于PHP DateTime->diff方法,所以添加了它;
我通常这样做基准测试(kudo也对freedompeace):
$time = microtime(true);
// do your thing
$diff = microtime(true) - $time;
见:http://php.net/microtime
对于其他日期,您可以这样做:
$date1 = new DateTime('05-04-2010');
$date2= new DateTime('yesterday');
// returns a DateInterval object
$diff = $date1->diff($date2);
DateInterval对象的拓扑结构如下:
<>之前$DateInterval->y;公共整数$m;公共整数$d;公共整数$h;公共整数$i;公共整数$s;公共整数$invert;公众混合型$days;之前DateTime Class http://www.php.net/manual/en/class.datetime.php
Diff method http://www.php.net/manual/en/datetime.diff.php
DateInterval Object http://www.php.net/manual/en/class.dateinterval.php
你可以这样做…在我看来这是一个普遍的问题。大的"幻数"是1970-1-1和1-1-1之间的差异。
$mtime = microtime(false);
list($usec, $sec) = explode(" ", $mtime);
$usec = (string)($usec * 10000000);
$timestamp = gmp_add(gmp_add(gmp_mul($sec, "10000000"), (string)$usec), "621355968000000000");
如果你不想用-gmp重新编译PHP,这似乎可以工作:
$time=time()
number_format(($time * 10000000) + 621355968000000000 , 0, '.', '');
使用microtime获取usec,它可以覆盖结束的0。