德尔福朱利安日期到正常日期

时间:2014-11-24 12:48:33

标签: delphi datetime julian

我想将Julian Date值转换为正常日期。谁能帮帮我吗? 我已经尝试过JulianDateToDateTime(一些双重值),但它引发了异常。 然后我尝试了ModifiedJulianDateToDateTime(一些双倍值),它发布了一个日期,但它完全错了。 例如,我的朱利安价值是226.它说它必须显示8月14日。但我无法将其转换为usig delphi。 感谢

2 个答案:

答案 0 :(得分:4)

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

来自文档:

  

朱利安日期是公元前4713年1月1日格林威治中午以来的天数,包括分数天。

对于System.DateUtils.ModifiedJulianDateToDateTime

  

修改后的朱利安日期是自1858年11月17日格林威治午夜以来的天数,包括小数天数。修改后的朱利安日期基于朱利安日期,但调整为使用午夜而不是中午作为起点,他们使用最近的日期作为起点。

因此,您必须根据这些起点中的任何一个输入Julian日期。


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


在评论中,您所拥有的日期似乎是特定年份的日期编号(有时在气象数据记录系统中称为朱利安日)。

然后使用:

myDT := EncodeDate(2014,1,1) + yourJulianDay - 1;  // If the year is 2014 

答案 1 :(得分:0)

如果您的"朱利安日期"真的是" Julian Day" (即,进入给定年份的天数,a.k.a。序数日期),然后您可以使用以下函数将其转换为TDate(您指定朱利安日应被视为年份):

uses DateUtils;

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

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