Python新手求助:将hhmm格式整数转换为标准时间格式
解决hhmm整数转时间格式的Python方案
嘿,作为Python新手碰到这种时间格式转换的问题太正常啦!我来给你几个简单好用的办法,不管你是处理单个值还是整列数据都能搞定。
单个值转换的两种方法
方法1:手动分割(直观易懂,适合新手理解)
这种方法一步步拆解,能让你清楚看到转换的全过程:
from datetime import time def hhmm_int_to_time(hhmm_num): # 把整数转成4位字符串,不足4位的前面补0(比如95变成'0095') hhmm_str = f"{hhmm_num:04d}" # 截取前两位当小时,后两位当分钟 hours = int(hhmm_str[:2]) minutes = int(hhmm_str[2:]) # 返回标准的time对象 return time(hours, minutes) # 测试几个例子 print(hhmm_int_to_time(1230)) # 输出:12:30:00 print(hhmm_int_to_time(95)) # 输出:00:59:00 print(hhmm_int_to_time(2359)) # 输出:23:59:00
方法2:用datetime.strptime(更简洁)
Python的datetime模块自带解析格式化字符串的方法,一行就能搞定核心转换:
from datetime import datetime def hhmm_int_to_time(hhmm_num): # 先转成4位字符串,再用%H%M格式解析,最后提取time部分 return datetime.strptime(f"{hhmm_num:04d}", "%H%M").time() # 测试效果和上面完全一样 print(hhmm_int_to_time(1559)) # 输出:15:59:00
整列数据转换(用Pandas)
如果你是用Pandas处理表格里的整列时间数据,那效率会更高:
import pandas as pd # 假设你的数据存在DataFrame的time_int列里 df = pd.DataFrame({'time_int': [1230, 1559, 900, 830, 2359]}) # 一步完成转换:转字符串补0 → 解析成时间 → 提取time对象 df['formatted_time'] = pd.to_datetime( df['time_int'].astype(str).str.zfill(4), format='%H%M' ).dt.time print(df)
运行后你会得到这样的结果:
time_int formatted_time 0 1230 12:30:00 1 1559 15:59:00 2 900 09:00:00 3 830 08:30:00 4 2359 23:59:00
关键提醒
为什么一定要补前导零?因为像900这样的整数转成字符串是'900',只有3位,如果直接分割会得到小时90、分钟0,这显然是错误的!补成4位后变成'0900',才能正确分割出小时09和分钟00。
内容的提问来源于stack exchange,提问作者Ben G
相关产品推荐
相关产品推荐

