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

Python 3.2以下版本如何将datetime转换为Delphi TDateTime?

Python 3.2以下版本:将datetime转换为Delphi TDateTime

我来帮你搞定这个兼容问题~ 首先先明确Delphi TDateTime的规则:它是以1899年12月30日为起始点的双精度浮点数,整数部分代表起始日到目标日的天数,小数部分则是当天时间占一整天的比例。

你原来的代码思路是对的,但timedelta.total_seconds()确实只在Python 3.2及以上版本才支持。那我们可以手动计算总秒数来替代这个方法,下面是兼容低版本的实现:

import datetime

def pdt2ddt(pydt):
    # Python datetime 转 Delphi TDateTime(兼容Python <3.2)
    start = datetime.datetime(1899, 12, 30)
    delta = pydt - start
    # 手动计算总秒数:天数转秒 + 剩余秒数 + 微秒转秒
    total_seconds = delta.days * 86400 + delta.seconds + delta.microseconds / 1000000
    # 转换为占一天的比例,加上天数得到TDateTime值
    return delta.days + total_seconds / (3600 * 24)

验证一下

用你给出的测试值datetime.datetime(2018, 4, 1, 16, 22, 9, 920000)代入计算,得到的结果正好是43191.68205925926,和预期一致。

原理说明

  • 对于timedelta对象,我们可以直接获取days(整数天数)、seconds(不足一天的秒数,范围0-86399)、microseconds(剩余微秒数,范围0-999999)这三个属性
  • 把这三部分转换成总秒数后,除以一天的总秒数(86400)得到小数部分,再加上整数天数,就得到了标准的Delphi TDateTime格式。

内容的提问来源于stack exchange,提问作者Игорь Тимофеев

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:58:17