我正在尝试格式化日期时间字符串,以毫秒表示为9位数。如果不操纵整个字符串,我无法弄清楚如何做到这一点。我目前有
datetime.datetime.utcnow().strftime('%Y-%m%d %H:%M:%S.%f')
我希望毫秒(%f)打印为9位数,而不是默认值6.我该怎么做?
为了澄清,我不需要9位精度,我只需要打印,例如,2013-07-19 09:28:00.000544913,三个填充0。
答案 0 :(得分:3)
datetime.datetime.utcnow().strftime('%Y-%m%d %H:%M:%S.000%f')
似乎适合我。
从物理上讲,你应该这样做才能得到正确的时间表示:
datetime.datetime.utcnow().strftime('%Y-%m%d %H:%M:%S.%f000')
答案 1 :(得分:3)
首先,毫秒到9位数没有任何意义。 “毫”表示“千分之一”,如3位数。
其次,你没有毫秒,你有微秒。 datetime
类型具有microseconds
属性,%f
定义为微秒。当然,“微”意味着“百万分之一”,如6位数字。
由于对象中没有存储纳秒,因此使用纳秒格式说明符没有多大意义。但是,如果有一个纳秒格式说明符,那么它只是微秒,最后加上三个0,你可以自己做:
'%Y-%m%d %H:%M:%S.%f000'
或者,没有人强迫您使用strfime
;您可以随时使用str.format
并添加{:09}
字段并将dt.microseconds * 1000
传递给它。
答案 2 :(得分:1)
这是不可能的。看看here。根据它,精度提供微观(这是你所拥有的),而不是纳秒(这是你想要的)。