3

如何使用 java API 将代表 2013 年 11 月 18 日的朱利安日期 2456606 转换为字符串格式 18/11/2013?我尝试执行下面的代码,但它没有给我正确的答案。欢迎对以下代码进行任何更正

    String j = "2456606";
    Date date = new SimpleDateFormat("yyyyD").parse(j);
    String g = new SimpleDateFormat("dd.MM.yyyy").format(date);
    System.out.println(g);
4

3 回答 3

5
于 2017-03-01T07:09:56.470 回答
3

2013 年 11 月 18 日的儒略日期是"2013322". 您使用的数字"2456606"将是 2456 年的第 606 天,即 2457 年 8 月 28 日。

您可能还打算使用与"yyyyD"输入不同的日期格式。有关可能的代码的信息,请参阅http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html

编辑

您用于儒略日期的值是自公元前 4713 年 1 月 1 日以来的天数。要使用该系统获取 Julian 日期,您需要执行以下操作:

String j = "2456606";
int day = Integer.parseInt(j) - x; // x == Jan 1, 1970 on the Gregorian
j = Integer.toString(day);
Date date = new SimpleDateFormat("D").parse(j);
String g = new SimpleDateFormat("dd.MM.yyyy").format(date);
System.out.println(g);

哪里x是公历1970年1月1日对应的儒略日,即公元前4713年1月1日到1970年1月1日之间经过的天数。

于 2013-11-17T21:42:07.887 回答
-1
If you have 7 digit julian date then you can use the following to convert it to Gergorian date.

longJuliandate 是您的输入,它会返回一个字符串,您可以将其格式化为日期。如果您有 5 位朱利安日期,则需要使用“yyDDD”。

DateFormat dt = new SimpleDateFormat("yyyyDDD");
    try
    {
    Date date = dt.parse(longJulianDate);  //2018038
    String str = new SimpleDateFormat("yyyyMMdd").format(date);
    } catch (ParseException e) {}
于 2019-02-08T18:08:32.513 回答