如何将Python datetime转换为自定义纪元时间(1899-12-30为起点)
如何将Datetime转换为基于1899年12月30日的天数+时间占比格式
你需要将datetime转换为整数部分为自1899年12月30日以来的天数,小数部分为当日时间占一天比例的数值(例如1900年1月1日中午对应2.5,1900年2月1日下午3点对应33.625),当前使用timestamp()获取1970年纪元秒数的方式不符合需求,以下是正确的实现方法:
实现思路
核心是计算目标日期与基准日期(1899-12-30)的时间差,再将时间差拆解为完整天数加上当日时间的占比:
- 定义基准日期
1899-12-30 - 计算目标datetime和基准日期的时间差
timedelta - 最终数值 = 时间差的完整天数 + 时间差的剩余秒数 / 一天总秒数(86400)
完整代码示例
import datetime datee = "03/11/2005, 23:12" # 解析字符串为datetime对象 target_date = datetime.datetime.strptime(datee, "%d/%m/%Y, %H:%M") # 设定基准日期 base_date = datetime.datetime(1899, 12, 30) # 计算时间差 time_diff = target_date - base_date # 计算目标格式数值 result = time_diff.days + time_diff.seconds / 86400 print(result)
验证示例
- 对于
1900-01-01 12:00:与基准日相差2天,12小时占一天的0.5,结果为2.5,符合预期 - 对于
1900-02-01 15:00:与基准日相差33天,15小时占一天的0.625,结果为33.625,符合预期
注意事项
如果你的datetime对象包含时区信息,需要确保基准日期也转换为对应时区的时间,避免因时区偏移导致计算误差。
内容的提问来源于stack exchange,提问作者voviz
相关产品推荐
相关产品推荐

