1. 苏葳的备忘录首页
  2. 编程

Python实现php的microtime()函数及datetime精度问题

php python microtime根据php文档说明,如果microtime()函数调用时不带可选参数,此函数将以 “msec sec” 的格式返回一个字符串,其中 sec 是自 Unix 纪元(0:00:00 January 1, 1970 GMT)起到现在的秒数,msec 是微秒部分。字符串的两部分都是以秒为单位返回的。如果此函数调用时加上了”TRUE”的参数,则将返回一个浮点数。也就是说,microtime()返回值类型是string(21),microtime(true)返回值类型是float。

php的microtime()函数输出如下所示:

0.07247200 1371688273

在python中如何实现相应功能呢?

import time
import math
def microtime(get_as_float = False) :
    if get_as_float:
        return time.time()
    else:
        return '%f %d' % math.modf(time.time())

但是需注意time.time()函数在windows下和unix下的不同。

win下:
>>> time.time()
1371691047.612
unix下(aix,ubuntu,RHEL)
>>> time.time()
1388485014.036239

可以看出,由于python的time模块机制,unix下的精度要高于win下。而php的microtime()则无区别。所以某些情况下,可能上述python实现无法完全替代php中microtime()函数功能。datetime模块也有类似现象,win下:

>>> datetime.datetime.today().microsecond
984000

后三位恒为0,而在unix下:

>>> datetime.datetime.today().microsecond
576919

另外一些函数,如time.clock()等的作用机制,在使用时需更细致的研究。

原创文章,作者:苏葳,如需转载,请注明出处:https://www.swmemo.com/489.html

发表评论

邮箱地址不会被公开。 必填项已用*标注