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

技术问询:如何将Tick时间及Excel浮点时间转为Python标准HH:MM:SS格式

问题解决方案:两种Python时间格式转换方法

# 1. 将Tick时间转换为HH:MM:SS格式

首先明确:通常我们说的Tick(比如.NET框架中的定义)是以100纳秒为单位的时间戳,也就是1 Tick = 1e-7秒。要转换成HH:MM:SS格式,可以用datetime.timedelta来处理时间差,再格式化输出:

import datetime

def tick_to_hhmmss(tick):
    # 将Tick转换为总秒数
    total_seconds = tick / 10_000_000
    # 用timedelta处理时间差,自动计算时分秒
    time_delta = datetime.timedelta(seconds=total_seconds)
    # 去掉毫秒部分,保留HH:MM:SS格式
    return str(time_delta).split('.')[0]

# 测试示例:对应17:30:01的Tick值
sample_tick = 637956378010000000
print(tick_to_hhmmss(sample_tick))  # 输出: 17:30:01

这个方法的好处是即使Tick对应的时间超过24小时,也能正确输出(比如30:15:45这种格式),不需要额外处理。

# 2. Excel浮点型时间转换为HH:MM:SS

Excel的浮点时间规则是:1.0代表一整天(24小时),所以0.7291782407407408就是一天的72.9178%,对应17:30:01。这里有两种简洁的实现方式:

方法一:直接计算时分秒

适合只需要时分秒、不想引入日期处理的场景:

def excel_float_to_hhmmss(excel_time):
    # 计算总秒数:1天=24*3600秒
    total_seconds = excel_time * 24 * 3600
    # 拆分小时、分钟、秒
    hours = int(total_seconds // 3600)
    remaining = total_seconds % 3600
    minutes = int(remaining // 60)
    seconds = int(round(remaining % 60))  # 四舍五入到整数秒
    # 格式化补零,确保两位数字
    return f"{hours:02d}:{minutes:02d}:{seconds:02d}"

# 测试示例
sample_excel_time = 0.7291782407407408
print(excel_float_to_hhmmss(sample_excel_time))  # 输出: 17:30:01
方法二:利用datetime格式化

如果需要同时处理日期(比如Excel时间大于1的情况,代表多天后的时间),这种方法更灵活:

from datetime import datetime, timedelta

def excel_float_to_hhmmss(excel_time):
    # Excel的时间基准是1899-12-30(因为历史闰年bug,不是1900-01-01)
    base_datetime = datetime(1899, 12, 30)
    # 计算目标时间
    target_datetime = base_datetime + timedelta(days=excel_time)
    # 提取时分秒格式
    return target_datetime.strftime("%H:%M:%S")

# 测试同样的输入
print(excel_float_to_hhmmss(sample_excel_time))  # 输出: 17:30:01

这个方法即使输入是1.7291782407407408(代表一天后的17:30:01),也能正确输出17:30:01。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 21:28:11