-1

我想将 Julian Date 值转换为正常日期。谁能帮帮我吗?我试过 JulianDateToDateTime(somedouble value) 但它引发了异常。然后我尝试了 ModifiedJulianDateToDateTime(some double value) 它发布了一个日期,但它完全错误。例如,我的 Julian Value 是 226。它说它必须显示 8 月 14 日。但我无法使用 delphi 转换它。谢谢

4

2 回答 2

4

System.DateUtils.JulianDateToDateTime将儒略日期转换为 TDateTime 值。

从文档:

儒略日期是自公元前 4713 年 1 月 1 日格林威治中午以来的天数,包括小数天数。

对于System.DateUtils.ModifiedJulianDateToDateTime

修改后的儒略日期是自 1858 年 11 月 17 日格林威治午夜以来的天数,包括小数天数。修改后的儒略日期基于儒略日期,但调整为使用午夜而不是中午作为起点,并且使用更新的日期日期作为起点。

因此,您必须根据其中任何一个起点输入儒略日期。


您可以使用反向函数来获得正确的儒略日期:DateTimeToJulianDate / DateTimeToModifiedJulianDate


在评论中,您拥有的日期似乎是某一年的天数(有时在气象数据记录系统中称为儒略日)。

然后使用这个:

myDT := EncodeDate(2014,1,1) + yourJulianDay - 1;  // If the year is 2014 
于 2014-11-24T13:10:52.210 回答
0

如果您的“儒略日”确实是“儒略日”(即特定年份的天数,即序数日期),那么您可以使用以下函数将其转换为 TDate(您指定儒略日的年份应考虑在):

uses DateUtils;

FUNCTION JulianDay(Year,Day : Cardinal) : TDate;
  BEGIN
    Result:=IncDay(EncodeDate(Year,1,1),PRED(Day))
  END;

这将返回 JulianDay(2014,226) 的 8 月 14 日

于 2014-11-24T14:17:11.590 回答