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