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