【问题标题】:Convert a C++ time_t to Delphi TDateTime将 C++ time_t 转换为 Delphi TDateTime
【发布时间】:2011-06-28 02:07:22
【问题描述】:

在 Delphi XE 应用程序中,我正在从最初由 C++ 程序创建的数据库中读取值。有一个日期列,存储(它会出现)为 time_t,即 Unix 时间,自 1970 年 1 月 1 日 00:00 UTC 以来的秒数。我可以处理时区,但是如何从 (long) time_t 获取 TDateTime?

【问题讨论】:

    标签: c++ delphi time-t


    【解决方案1】:

    尝试使用作为 Dateutils 单元一部分的 unixtodatetime 函数:http://docwiki.embarcadero.com/VCL/en/DateUtils.UnixToDateTime

    【讨论】:

      【解决方案2】:

      如果您出于某种原因想自己做,显而易见的方法是将 time_t 除以一天中的秒数,然后将其添加到 1970 年 1 月 1 日 00:00 的 TDateTime。

      (但 RRUZ 的答案应该可以工作,这意味着您不必重新发明轮子)。

      【讨论】:

      • 如果您使用的 Delphi 版本不包含 DateUtils 单元,则需要此功能。您描述的算法正是 UnixToDateTime 所做的;您引用的 TDateTime 值是 25569。
      • 感谢您提及这个常数。我没有看 UnixToDateTime 的代码,有点懒得弄清楚正确的 TDataTime 值。但是一次快速调用 EncodeDate 应该已经为提问者提供了该值:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-23
      • 2014-02-02
      • 1970-01-01
      • 2012-03-18
      • 2013-03-22
      • 2015-03-22
      相关资源
      最近更新 更多