1

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

誰でも何か考えがありますか?私はこれに何週間も費やしました!

4

1 に答える 1

0

私があなたを理解していれば、あなたが実際に望んでいるのは、実際に予定されている日付の前日の午後 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のユリウス日カレンダーはこちら

于 2014-02-03T22:02:59.993 に答える