Java 儒略日期转换

Java 儒略日期转换,java,julian-date,Java,Julian Date,如何将它们转换为常规日期 我试着把它们转换成- 12-13-7359适用于2009225!!没道理 使用库并执行以下操作: Sample Julian Dates: 2009218 2009225 2009243 使用Java API: String dateStr = "2009218"; MutableDateTime mdt = new MutableDateTime(); mdt.setYear(Integer.parseInt(dateStr.subString(0,3))); md

如何将它们转换为常规日期

我试着把它们转换成-

12-13-7359适用于2009225!!没道理

使用库并执行以下操作:

Sample Julian Dates:
2009218
2009225
2009243
使用Java API:

String dateStr = "2009218";
MutableDateTime mdt = new MutableDateTime();
mdt.setYear(Integer.parseInt(dateStr.subString(0,3)));
mdt.setDayOfYear(Integer.parseInt(dateStr.subString(4)));
Date parsedDate  = mdt.toDate();
----编辑---- 感谢Alex提供了最佳答案:

String dateStr = "2009218";
Calendar cal  = new GregorianCalendar();
cal.set(Calendar.YEAR,Integer.parseInt(dateStr.subString(0,3)));
cal.set(Calendar.DAY_OF_YEAR,Integer.parseInt(dateStr.subString(4)));
Date parsedDate  = cal.getTime();

另一种格式是CYYDDDD,我用Java编写了这个函数

Date myDate = new SimpleDateFormat("yyyyD").parse("2009218")

你的例子不是朱利安的约会。儒略日期是指自公元前4713年1月1日起的天数,例如,2000-01-01的日期为2.451.545。(如果2009225是你想要的朱利安日期,在线转换器是对的)我想是的,但我不知道那是什么样的日期!我甚至不能问。我不清楚你想转换什么:朱利安日历日期?或者修改了朱利安日(天文数据),比如你的链接?如果这些日期以一年开始,则存在歧义(2009111是1月11日还是11月1日?)。我希望我能问客户并回答您的问题。我唯一能想到的是它们的格式是“YYYYDDD”-一年中的第DDDth天YYYY。但是,如果您想确保正确完成,您必须询问日期的来源,或者至少有足够数量的示例(编码日期和相应的实际日期)来确定其含义。MutableDateTime将计算出月份,因为它知道年份和日期。我没有办法使用Java API来做到这一点吗?请投票并/或将我的答案标记为正确:)对不起-我的错。:)注意:由于set没有(int,long)方法,您可能需要进一步编辑。可能要将其更改为整数。请使用内置的日期分析器!
public static int convertToJulian(Date date){
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    int year = calendar.get(Calendar.YEAR);
    String syear = String.format("%04d",year).substring(2);
    int century = Integer.parseInt(String.valueOf(((year / 100)+1)).substring(1));
    int julian = Integer.parseInt(String.format("%d%s%03d",century,syear,calendar.get(Calendar.DAY_OF_YEAR)));
    return julian;
}