如何将起始时间1800:00:00.0起的小时数转换为年月日
小时数转1800基准日期的技术方案
给定从1800-01-01 00:00:00开始计算的小时数(科学计数法格式),以下是两种实用转换方案:
方案一:Python 代码实现
Python的datetime模块可直接处理跨多年的日期运算,精度可靠:
from datetime import datetime, timedelta # 定义起始基准时间 start_dt = datetime(1800, 1, 1, 0, 0, 0) # 待转换的小时数列表 hour_list = [ 1.52887e+06, 1.52959e+06, 1.53034e+06, 1.53108e+06, 1.5318e+06, 1.53254e+06, 1.53326e+06, 1.53401e+06, 1.53475e+06, 1.53542e+06, 1.53617e+06, 1.53689e+06, 1.53763e+06 ] # 批量转换并输出 for hrs in hour_list: target_dt = start_dt + timedelta(hours=hrs) print(f"{hrs:.2e} → {target_dt.strftime('%Y-%m-%d')}")
运行说明
- 代码自动将科学计数法的小时数转换为浮点数,通过
timedelta累加至起始时间 - 最终输出格式为
YYYY-MM-DD,可按需修改strftime的格式参数(如%Y年%m月%d日)
方案二:Excel Power Query 可视化操作
Excel默认日期系统不支持1900年之前的日期,用Power Query可完美解决:
- 将所有小时数粘贴到Excel的A列(A1为表头,A2开始为数据)
- 选中A列 → 点击「数据」选项卡 → 「从表格/区域」(勾选「我的表格有标题」)
- 在Power Query编辑器中,点击「添加列」→ 「自定义列」,输入公式:
(把「小时数」替换为你的实际列名)= #datetime(1800, 1, 1, 0, 0, 0) + #duration(0, [小时数], 0, 0) - 选中新生成的自定义列 → 点击「转换」选项卡 → 「数据类型」→ 「日期」
- 点击「关闭并上载」,即可得到转换后的日期列
备选:VBA 自定义函数
如果习惯用Excel公式,可编写VBA函数:
Function HourToDate(hrs As Double) As Date HourToDate = DateSerial(1800, 1, 1) + hrs / 24 End Function
使用时在单元格输入=HourToDate(A2),再设置单元格格式为YYYY-MM-DD即可。
注意事项
- 科学计数法的数值需确保无精度丢失(如1.52887e+06等价于1528870小时)
- 不同工具的闰年计算逻辑一致(均遵循公历规则),无需额外调整
内容的提问来源于stack exchange,提问作者TThoye
相关产品推荐
相关产品推荐

