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

如何用Python的xlsxwriter以HHHH:MM格式输出时长

解决XlsxWriter输出超过24小时时长的问题

问题核心在于XlsxWriter对timedelta的处理逻辑和Excel的时间格式规则:

  • Excel的日期时间数值以天为单位,1代表一整天(86400秒),write_datetime会把timedelta解析为相对于起始日期的时间,超过24小时的部分会被当作天数,显示时只保留单日的小时余数,导致24小时被截断为0。
  • 要显示累计小时数(如24:01),必须使用Excel的特殊数字格式[h]:mm,方括号表示统计累计小时而非单日小时。

修正后的代码如下:

import xlsxwriter

xlsx_filename = 'foo.xlsx'
workbook = xlsxwriter.Workbook(xlsx_filename)
worksheet = workbook.add_worksheet()

# 定义显示累计小时的格式
duration_format = workbook.add_format({'num_format': '[h]:mm'})

time_seconds = 86460  # 1天1分钟
# 将秒数转换为Excel的时间数值(以天为单位)
excel_time_value = time_seconds / 86400

# 用write_number写入数值并应用格式
worksheet.write_number(0, 0, excel_time_value, duration_format)

workbook.close()

关键说明:

  • [h]:mm是Excel原生支持的格式,专门用于显示超过24小时的累计时长,同理[m]:ss可用于显示超过60分钟的累计分钟数。
  • 直接将总秒数除以86400得到Excel可识别的时间数值,规避了timedelta被自动解析为日期天数的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 22:36:19