簡體   English   中英

轉換為java.util.Date時,Joda LocalDateTime IllegalFieldValueException

Joda LocalDateTime IllegalFieldValueException when converting to java.util.Date

提示:本站收集StackOverFlow近2千萬問答,支持中英文搜索,鼠標放在語句上彈窗顯示對應的參考中文或英文, 本站還提供   中文簡體   英文版本   中英對照 版本,有任何建議請聯系yoyou2525@163.com。

我第一次使用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有一些限制嗎?

2 個回復

以下通常是正確的。 但不是這次。

始終在Joda中使用 .getMillis() - 它將為您提供Epoch的毫秒時間范圍,並允許完美無缺的(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年在Epoch之前...我不知道它如何影響Date和millis,但是,是的,只是說。

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

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

相關問題
 
粵ICP備18138465號  © 2020-2022 STACKOOM.COM