请参阅此处的Julian Day日历
如果我使用joda time执行此语句:
System.out.println(new DateTime(1387947600*1000L));
它打印出此日期:
2013-12-24T23:00:00.000-06:00
我要创建的是这个确切的日期,但我所拥有的只是EST时区的Julian Date格式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
to
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
从NASA