3

私は初めてJodaTimeを使用していますが、これの何が問題になっているのかわかりません。

LocalDateTime localDateTime = new LocalDateTime(1965, 4, 8, 15, 16, 17, 18);
Date date = localDateTime.toDate();

これを実行すると、次のようになります。

org.joda.time.IllegalFieldValueException: Value -982 for millisOfSecond must be in the range [0,999]

しかし、これを実行した場合(ミリ秒なし)、例外は発生しません。

LocalDateTime localDateTime = new LocalDateTime(1965, 4, 8, 15, 16, 17);
Date date = localDateTime.toDate();

そして、私は例外を取得しません(つまり、年= 1975):

LocalDateTime localDateTime = new LocalDateTime(1975, 4, 8, 15, 16, 17, 18);
Date date = localDateTime.toDate();

どうしたの?java.util.Dateへの変換に関していくつかの制限はありますか?

4

2 に答える 2

1

以下は通常正しいです。しかし、今回はそうではありません。

常にJodaで使用.getMillis()します-エポックからミリ秒の時間範囲を提供し、完璧な(Java API)Date()構築を可能にします-このように:new Date(millis)

したがって、要約すると:

LocalDateTime localDateTime = new LocalDateTime(1975, 4, 8, 15, 16, 17, 18);
Date date = new Date(localDateTime.getLocalMillis());

これは実際に機能するソリューションです。

LocalDateTime ldt = new LocalDateTime( 1975, 4, 8, 15, 16, 17, 18 );        
DateTime dt = new DateTime( ldt.getYear(), ldt.getMonthOfYear(), ldt.getDayOfMonth(), ldt.getHourOfDay(), ldt.getMinuteOfHour(), ldt.getSecondOfMinute(), ldt.getMillisOfSecond());
Date d = new Date( dt.getMillis() );

そして1965年はエポックの前です...それが日付とミリ秒にどのように影響するかはわかりませんが、ええ、ただ言っています。

于 2012-09-13T08:51:38.290 に答える
1
  LocalDateTime localDateTime = new LocalDateTime(1965, 4, 8, 15, 16, 17, 18);
  Date date = localDateTime.toDateTime().toDate();
于 2012-09-13T11:39:24.613 に答える