使用strftime()函数中的%f在Python中获取微秒
在Python的time模块中,无法使用%f获取微秒。对于仍然想只使用time模块的人来说,可以使用以下解决方法:
import time now = time.time() mlsec = repr(now).split('.')[1][:3] print time.strftime("%Y-%m-%d %H:%M:%S.{} %Z".format(mlsec), time.localtime(now))
这样就可以得到类似于"2017-01-16 16:42:34.625 EET"的结果(是的,我使用毫秒,已经足够了)。
要详细了解代码的工作原理,可以将以下代码粘贴到Python控制台中:
import time now = time.time() print now struct_now = time.localtime(now) print struct_now print time.strftime("%Y-%m-%d %H:%M:%S %Z", struct_now) mlsec = repr(now).split('.')[1][:3] print mlsec timestamp = time.strftime("%Y-%m-%d %H:%M:%S.{} %Z".format(mlsec), struct_now) print timestamp
为了澄清问题,我还在这里附上了我使用Python 2.7.12得到的结果:
import time now = time.time() print now print now struct_now = time.localtime(now) print struct_now print time.strftime("%Y-%m-%d %H:%M:%S %Z", struct_now) mlsec = repr(now).split('.')[1][:3] print mlsec timestamp = time.strftime("%Y-%m-%d %H:%M:%S.{} %Z".format(mlsec), struct_now) print timestamp
通过以上方法,你可以使用strftime()在Python中获取微秒。
问题出现的原因是time模块的strftime函数不支持获取毫秒信息,只能获取到秒级的时间信息。解决方法是使用datetime模块的strftime函数来获取毫秒信息。具体代码如下:
from datetime import datetime datetime.now().strftime("%H:%M:%S.%f")
在Python 3中,datetime和time模块都支持使用%z指令来获取时区信息。可以参考datetime和time模块的官方文档来了解更多信息。如果只使用import datetime导入datetime模块,则需要使用datetime.datetime.now().strftime("%H:%M:%S.%f")来获取毫秒信息。