Python datetime utcnow()毫秒到9位?

时间:2015-04-28 11:01:41

标签: python datetime

我正在尝试格式化日期时间字符串,以毫秒表示为9位数。如果不操纵整个字符串,我无法弄清楚如何做到这一点。我目前有

datetime.datetime.utcnow().strftime('%Y-%m%d %H:%M:%S.%f')

我希望毫秒(%f)打印为9位数,而不是默认值6.我该怎么做?

为了澄清,我不需要9位精度,我只需要打印,例如,2013-07-19 09:28:00.000544913,三个填充0。

3 个答案:

答案 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。根据它,精度提供微观(这是你所拥有的),而不是纳秒(这是你想要的)。