>>> a = str(datetime.now())
>>> a
'2012-03-22 11:16:11.343000'
我需要得到一个类似的字符串:'16:11.34'
。
应尽可能紧凑。
或者我应该使用time()代替? 我怎么得到它?
答案 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')
这是一种骇客,如果有人有更好的解决方案,我会为之