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

如何将24小时制整数时间值转换为HH:MM:SS格式时间戳

核心错误原因

  1. time.gmtime()的入参要求是1970-01-01 00:00:00 UTC起的累计秒数,你传入的是代表时间点的四位整数,参数类型完全不匹配,自然输出结果错误。
  2. time模块下的函数仅支持单个整数输入,无法直接处理pandas Series类型,所以批量转换时会抛出类型错误。

正确转换逻辑

你的输入是四位整数,前两位为小时值,后两位为分钟值,只需要按如下规则处理即可:

  • 用整除以100提取小时值,对24取模处理2400转00:00的特殊场景
  • 用取模100提取分钟值
  • 格式化补零后拼接为HH:MM:SS格式即可

单值转换实现

def hour_num_to_time(hour_num: int) -> str:
    hour = (hour_num // 100) % 24
    minute = hour_num % 100
    return f"{hour:02d}:{minute:02d}:00"

# 测试效果
print(hour_num_to_time(1700)) # 输出 17:00:00
print(hour_num_to_time(2400)) # 输出 00:00:00
print(hour_num_to_time(1000)) # 输出 10:00:00

Pandas整列批量转换实现

方法1:调用自定义函数(代码简洁,适合小数据量)

import pandas as pd

data = pd.DataFrame({'Hour':[1700, 2400, 1000]})
data['formatted_time'] = data['Hour'].apply(hour_num_to_time)
print(data)

方法2:向量化操作(性能更高,适合十万级以上数据量)

import pandas as pd

data = pd.DataFrame({'Hour':[1700, 2400, 1000]})
# 拆分小时、分钟并格式化
data['formatted_time'] = (
    (data['Hour'] // 100 % 24).astype(str).str.zfill(2)
    + ":"
    + (data['Hour'] % 100).astype(str).str.zfill(2)
    + ":00"
)
print(data)

如果你需要转换为datetime时间类型而非字符串,可以额外增加一步转换:

data['time_type'] = pd.to_datetime(data['formatted_time'], format='%H:%M:%S').dt.time

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 05:27:03