You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python datetime模块实现12小时制时钟的问题

解决Python中datetime转换为12小时制时间的问题

你的代码报错是因为直接将完整的datetime对象和整数12比较,两者类型不匹配。datetime对象包含日期、时间等完整信息,需要提取小时部分或使用格式化方法来转换为12小时制。

下面提供两种可行的解决方案:

方法一:使用strftime直接格式化(推荐)

Python的datetime对象自带strftime方法,通过指定格式字符串可以直接输出12小时制时间和日期,无需手动计算:

import time
from datetime import datetime
from zoneinfo import ZoneInfo

while True:
    # 获取美国东部时区的当前时间
    now = datetime.now(ZoneInfo('US/Eastern'))
    # 格式化字符串:%Y-%m-%d是日期,%I是12小时制小时(01-12),%M分钟,%S秒,%p是AM/PM标识
    formatted_clock = now.strftime("%Y-%m-%d %I:%M:%S %p")
    # 用\r实现同一行刷新显示时钟
    print(formatted_clock, end='\r')
    time.sleep(1)

关键格式说明:

  • %I:12小时制的小时(范围01-12)
  • %p:自动显示AM(上午)或PM(下午)
  • %Y-%m-%d:年-月-日格式的日期

方法二:手动提取小时转换

如果你想手动处理小时的转换逻辑,可以提取datetime对象的hour属性,再判断转换:

import time
from datetime import datetime
from zoneinfo import ZoneInfo

while True:
    now = datetime.now(ZoneInfo('US/Eastern'))
    hour_24 = now.hour
    
    # 24小时制转12小时制逻辑
    if hour_24 == 0:
        hour_12 = 12
        period = 'AM'
    elif 1 <= hour_24 < 12:
        hour_12 = hour_24
        period = 'AM'
    elif hour_24 == 12:
        hour_12 = 12
        period = 'PM'
    else:
        hour_12 = hour_24 - 12
        period = 'PM'
    
    # 格式化输出,确保分钟、秒是两位数
    formatted_clock = f"{now.date()} {hour_12}:{now.minute:02d}:{now.second:02d} {period}"
    print(formatted_clock, end='\r')
    time.sleep(1)

内容的提问来源于stack exchange,提问作者Liam Norwood

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 21:32:38