关于python:datetime以2位数格式获取小时

datetime get the hour in 2 digit format

本问题已经有最佳答案,请猛点这里访问。

当我得到一个时间的小时,它就会像这样在24小时的时钟上打印出来;

1
2
3
4
time1 = datetime.datetime.strptime("08/Jan/2012:08:00:00","%d/%b/%Y:%H:%M:%S")
print 'hour is ', time1.hour

> time is  8

我想把它改成08,而不是8。对于两位数的小时,这是很好的,但一旦它达到一位数,我就试图在它前面得到0。

我可能会做"time1.time",然后转换为字符串,然后拆分它,然后将小时转换回datetime对象,但这是一个冗长的过程,我想知道是否有一个更简单的解决方案?


只需使用.strftime()将其转储回字符串即可:

1
2
3
4
5
6
>>> import datetime
>>> dt = datetime.datetime.strptime("08/Jan/2012:08:00:00","%d/%b/%Y:%H:%M:%S")
>>> dt.hour
8
>>> dt.strftime("%H")
'08'

对于EDOCX1[1]不能有前导零:

1
2
>>> type(time1.hour)
<class 'int'>

这就是为什么你别无选择,只能先把time1.hour转换成str,然后操纵格式。

您可以使用@alecxe解决方案(看起来很优雅和正确),或者简单地使用类似的解决方案:

1
>>>"{0:0>2}".format(time1.hour)