【问题标题】:datetime get the hour in 2 digit format [duplicate]datetime 以 2 位数字格式获取小时 [重复]
【发布时间】:2016-10-19 13:42:43
【问题描述】:

当我得到一个时间的小时,它会像这样以 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”,然后转换为字符串,然后将其拆分,然后将小时转换回日期时间对象,但这很冗长,想知道是否有更简单的解决方案?

【问题讨论】:

    标签: python date datetime


    【解决方案1】:

    只需使用.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 为我节省了这么多痛苦!效果很好。
    【解决方案2】:

    int 不能有前导零:

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

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

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

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

    【讨论】:

    • 为什么使用&gt;?如果您改用{0:02d},则隐含= 格式,您可以免费获得符号处理。请参阅format spec
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-06
    • 1970-01-01
    • 2016-10-04
    • 1970-01-01
    • 2011-05-23
    • 2013-06-09
    • 1970-01-01
    相关资源
    最近更新 更多