Java Joda-Time DateTime 如何从儒略日期创建日期

标签 java datetime julian-date

如果我使用 Joda-Time 执行此语句:

System.out.println(new DateTime(1387947600*1000L));

它打印出这个日期:

2013-12-24T23:00:00.000-06:00

我试图创建的是这个确切的日期,但我所拥有的只是 EST 时区的儒略日期格式 13359。我尝试过的是将“20”附加到我的朱利安日期,给我字符串“2013359”。然后我使用代码:

DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyyDDD");   
DateTime test1 = formatter.parseDateTime(d2);

当我打印出 test1 时,它给了我:

2013-12-25T00:00:00.000-06:00

如果我将 test1 转换为 UTC使用时间

DateTime test2 = test1.withZoneRetainFields(DateTimeZone.forTimeZone(TimeZone.getTimeZone("UTC")));

然后打印出test2,我得到:

2013-12-25T00:00:00.000Z

这不是我要找的。我怎样才能从

"13359" in EST zone

2013-12-24T23:00:00.000-06:00

有人有什么想法吗?我花了几个星期的时间!

最佳答案

如果我理解你的话,你真正想要的是你实际约会的前一天晚上 11 点。注意:非闰年(2013 年)的第 359 天是 12 月 25 日。

试试这个:

import org.joda.time.LocalDateTime;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;

public class JulianDateTester {

  public static void main(String[] args) {
    String julianDateString = "13359";

    DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyyDDD");
    DateTime lcd = formatter.parseDateTime("20" + julianDateString);
    DateTime lcdWeWant = lcd.minusDays(1).hourOfDay().withMaximumValue();

    System.out.println("Input: " + julianDateString + ", formats as '" + lcd.toString());
    System.out.println("The date we want is '" + lcdWeWant.toString() + "'");
    System.out.println("The \"date\" we REALLY want is " + lcdWeWant.getMillis());

  }

}

哪些输出:

Input: 13359, formats as '2013-12-25T00:00:00.000-06:00
The date we want is '2013-12-24T23:00:00.000-06:00'
The "date" we REALLY want is 1387947600000

参见here for Julian Day calendar from Nasa

关于Java Joda-Time DateTime 如何从儒略日期创建日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21538148/

相关文章:

java - 使用 Swing 在 Pane 中选择文件

java - Android 语音识别 API 在 Android 7 Nougat 中不起作用

sql - 将转换后的 varchar 插入 datetime sql

java - sqlite 将 Jdn 转换为 unixepoch

java - 不使用 if 语句将小写字符转换为大写字符

java - Selenium Web 自动化 java 框架

MySQL:计算新列(将天转换为周)以获得产品的每周销售额

javascript - 如何使用angularjs从数组中删除时间

pandas - 将 Pandas datetime64[ns] 转换为儒略日

sql - 将儒略日期转换为 YYYY-MM-DD