如何从python中的datetime.now()获取min,seconds和毫秒?

时间:2012-03-22 18:27:49

标签: python datetime time

>>> a = str(datetime.now())
>>> a
'2012-03-22 11:16:11.343000'

我需要得到一个类似的字符串:'16:11.34'

应尽可能紧凑。

或者我应该使用time()代替? 我怎么得到它?

7 个答案:

答案 0 :(得分:27)

怎么样:

datetime.now().strftime('%M:%S.%f')[:-4]

我不确定你的意思是“毫秒只有2位数”,但这应该保持在2位小数。通过操纵strftime格式字符串来降低精度可能会有更优雅的方式 - 我不完全确定。

修改

如果%f修饰符不起作用,您可以尝试以下内容:

now=datetime.now()
string_i_want=('%02d:%02d.%d'%(now.minute,now.second,now.microsecond))[:-4]

同样,我假设您只想截断精度。

答案 1 :(得分:5)

此解决方案与@ gdw2提供的解决方案非常相似,只是正确地完成了字符串格式化以符合您的要求 - “应该尽可能紧凑”

>>> import datetime
>>> a = datetime.datetime.now()
>>> "%s:%s.%s" % (a.minute, a.second, str(a.microsecond)[:2])
'31:45.57'

答案 2 :(得分:2)

另一个类似的解决方案:

>>> a=datetime.now()
>>> "%s:%s.%s" % (a.hour, a.minute, a.microsecond)
'14:28.971209'

是的,我知道我没有完美的字符串格式。

答案 3 :(得分:2)

import datetime from datetime

now = datetime.now()

print "%0.2d:%0.2d:%0.2d" % (now.hour, now.minute, now.second)

你可以用白天做同样的事情。一个月等。

答案 4 :(得分:0)

time.second有助于将它放在你的python顶部。

答案 5 :(得分:0)

很抱歉打开一个旧帖子,但我发帖以防万一有人帮忙。这似乎是在Python 3中执行此操作的最简单方法。

from datetime import datetime

Date = str(datetime.now())[:10]
Hour = str(datetime.now())[11:13]
Minute = str(datetime.now())[14:16]
Second = str(datetime.now())[17:19]
Millisecond = str(datetime.now())[20:]

如果您需要将值作为数字,则将它们转换为int,例如

Hour = int(str(datetime.now())[11:13])

答案 6 :(得分:0)

如果您想精确地datetime.now()进行操作,可以使用

datetime.strptime(datetime.now().strftime('%Y-%m-%d %H:%M'), '%Y-%m-%d %H:%M')

类似的一个小时将是

datetime.strptime(datetime.now().strftime('%Y-%m-%d %H'), '%Y-%m-%d %H')

这是一种骇客,如果有人有更好的解决方案,我会为之