Microseconds lost in datetime
我试图得到微秒,但最后三位数总是0,所以我想我只能得到毫秒。
这是操作系统问题吗? 我使用的是Python 2.7.10的Win7x64。
难道我做错了什么? 我怎么能得到微秒?
1 2 3 | >>> import datetime >>> datetime.datetime.now() datetime.datetime(2016, 8, 9, 4, 33, 28, 504000) |
这不是重复的
在Python中使用%f和strftime()来获得微秒
因为这种方法最终给了我相同的零。
我相信这是Windows下Python 2.7实现的一个已知限制:
1 2 3 4 5 6 7 8 9 10 11 | >>> import datetime >>> datetime.datetime.now() datetime.datetime(2016, 8, 9, 10, 50, 59, 657000) >>> datetime.datetime.now() datetime.datetime(2016, 8, 9, 10, 51, 1, 561000) >>> datetime.datetime.now() datetime.datetime(2016, 8, 9, 10, 51, 2, 314000) >>> datetime.datetime.now() datetime.datetime(2016, 8, 9, 10, 51, 2, 906000) >>> datetime.datetime.now() datetime.datetime(2016, 8, 9, 10, 51, 9, 277000) |
例如,请参见此处和此处。
在Python 2.7源代码中,函数
1 2 3 4 5 6 7 8 | /* There are three ways to get the time: (1) gettimeofday() -- resolution in microseconds (2) ftime() -- resolution in milliseconds (3) time() -- resolution in seconds In all cases the return value is a float in seconds. Since on some systems (e.g. SCO ODT 3.0) gettimeofday() may fail, so we fall back on ftime() or time(). Note: clock resolution does not imply clock accuracy! */ |
所以Windows平台显然使用
1 | return (double)t.time + (double)t.millitm * (double)0.001; |
Python 3.5似乎具有完整的微秒分辨率,因此您可能需要考虑切换到那个(就好像大量其他改进还不够)。