获取日期时间,以两位数的格式显示小时。

10

在获取某个时间的小时数时,会按照24小时制进行打印,如下所示:

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',然后将其转换为字符串并分割,然后再将小时转换回日期时间对象,但这样做太冗长了,想知道是否有更简单的解决方案?

2个回答

12

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

>>> 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'

谢谢@alecxe让我免受很多痛苦!非常有效。 - Jane Kathambi

1

你不能在 int 中使用前导零:

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

这就是为什么您只能先将time1.hour转换为str,然后再操作格式的原因。
您可以选择@alecxe的解决方案(看起来优雅而正确),或者简单地使用类似以下的内容:
>>> "{0:0>2}".format(time1.hour)

5
为什么要使用 >?如果你使用 {0:02d},那么等于格式将被隐含,并且你可以免费获得符号处理。请参阅格式规范 - Martijn Pieters

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接