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

如何用Python仅通过for循环、if语句与字符串实现4时区时间转换?

美式时区时间转换解决方案(仅用基础字符串、for/if)

核心思路

纯靠字符串拆分、条件判断和循环实现东部(EST)、中部(CST)、山地(MST)、太平洋(PST)4个时区的转换,步骤如下:

  • 拆分输入的时间字符串,提取小时、分钟、时段(AM/PM)和原时区
  • 将12小时制时间转为24小时制,简化偏移计算
  • 定义各时区相对于东部时间(EST)的偏移量
  • 遍历目标时区,计算偏移后的时间,再转回12小时制格式

完整代码

# 获取用户输入(格式示例:10:30 AM EST)
user_input = input("输入时间及时区(如 10:30 AM EST):")

# 拆分输入为时间、时段、原时区
input_parts = user_input.split()
time_segment = input_parts[0]
am_pm = input_parts[1]
original_timezone = input_parts[2]

# 从时间字符串中拆分小时和分钟(用字符串定位冒号)
colon_pos = time_segment.find(':')
hour_str = time_segment[:colon_pos]
minute_str = time_segment[colon_pos+1:]
hour = int(hour_str)
minute = int(minute_str)

# 转换为24小时制,方便计算
if am_pm == "AM":
    if hour == 12:
        hour_24 = 0
    else:
        hour_24 = hour
else:  # PM时段
    if hour == 12:
        hour_24 = 12
    else:
        hour_24 = hour + 12

# 定义各时区相对于EST的偏移量(EST为基准,数值越小越晚)
timezone_offsets = {
    "EST": 0,
    "CST": -1,
    "MST": -2,
    "PST": -3
}

# 获取原时区的偏移值
original_offset = timezone_offsets[original_timezone]

# 遍历所有目标时区,跳过原时区,计算转换结果
target_timezones = ["EST", "CST", "MST", "PST"]
for tz in target_timezones:
    if tz == original_timezone:
        continue
    
    target_offset = timezone_offsets[tz]
    # 计算目标时区与原时区的偏移差
    offset_difference = target_offset - original_offset
    new_hour_24 = hour_24 + offset_difference
    
    # 处理跨天情况(小于0加24,大于等于24减24)
    if new_hour_24 < 0:
        new_hour_24 += 24
    elif new_hour_24 >= 24:
        new_hour_24 -= 24
    
    # 将24小时制转回12小时制格式
    if new_hour_24 == 0:
        display_hour = "12"
        display_period = "AM"
    elif 1 <= new_hour_24 < 12:
        display_hour = str(new_hour_24)
        display_period = "AM"
    elif new_hour_24 == 12:
        display_hour = "12"
        display_period = "PM"
    else:  # 13-23点
        display_hour = str(new_hour_24 - 12)
        display_period = "PM"
    
    # 确保分钟显示为两位(比如5分转为05)
    if len(minute_str) < 2:
        minute_str = "0" + minute_str
    
    # 格式化并输出结果
    converted_time = f"{display_hour}:{minute_str} {display_period} {tz}"
    print(converted_time)

常见问题修正

  1. 小时转换错误:12AM要转为24小时制的0,而非12;12PM保持12不变,其他PM小时加12。
  2. 偏移方向搞反:比如从EST转PST,偏移差是-3(PST比EST晚3小时),小时需减3而非加3。
  3. 跨天未处理:比如EST的1AM转PST,结果是前一天的10PM,需通过加减24修正小时。
  4. 分钟格式问题:确保分钟始终是两位,比如输入"9:5 AM EST"要转为"9:05 AM EST"再处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 02:35:23