本文介紹了Joda Date Time在Java 8和Java 11之間返回的結(jié)果非常不同的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
如果我在Java 8中運行以下代碼:-
package au.com.tt.agora.debug.web;
import java.util.TimeZone;
import org.joda.time.DateTimeZone;
import org.joda.time.LocalDate;
public class Test
{
public static void main(String[] args)
{
String newDate = new LocalDate().toString("ddMMMyy");
System.out.println(newDate);
System.out.println(TimeZone.getDefault());
System.out.println(DateTimeZone.getDefault());
}
}
我得到的結(jié)果是:-
14Apr20
sun.util.calendar.ZoneInfo[id="Australia/Sydney",offset=36000000,dstSavings=3600000,useDaylight=true,transitions=142,lastRule=java.util.SimpleTimeZone[id=Australia/Sydney,offset=36000000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=3,startMonth=9,startDay=1,startDayOfWeek=1,startTime=7200000,startTimeMode=1,endMode=3,endMonth=3,endDay=1,endDayOfWeek=1,endTime=7200000,endTimeMode=1]]
Australia/Sydney
我在Java 11中運行相同的代碼,得到以下結(jié)果:-
14Apr.20
sun.util.calendar.ZoneInfo[id="Australia/Sydney",offset=36000000,dstSavings=3600000,useDaylight=true,transitions=142,lastRule=java.util.SimpleTimeZone[id=Australia/Sydney,offset=36000000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=3,startMonth=9,startDay=1,startDayOfWeek=1,startTime=7200000,startTimeMode=1,endMode=3,endMonth=3,endDay=1,endDayOfWeek=1,endTime=7200000,endTimeMode=1]]
Australia/Sydney
注意。在4月20日之間。這是Java 11中Joda Date Time的錯誤還是新功能?
更新
我使用的是Joda v2.10.5。此外,此代碼:-
打包au.com.tt.agora.debug.web;
導入java.time.Format.DateTimeForMatter;
導入java.util.TimeZone;
導入org.joda.time.DateTimeZone;
導入org.joda.time.LocalDate;
public class Test
{
public static void main(String[] args)
{
LocalDate joda = new LocalDate();
java.time.LocalDate date = java.time.LocalDate.of(joda.getYear(), joda.getMonthOfYear(), joda.getDayOfMonth());
System.out.println(date.format(DateTimeFormatter.ofPattern("ddMMMyy")));
System.out.println(TimeZone.getDefault());
System.out.println(DateTimeZone.getDefault());
}
}
為日期生成相同的結(jié)果。我在Windows上使用的是Java 11.0.6。
更新2
事實證明,這是一個地區(qū)問題。在Java 8和Java 11之間,某些地區(qū)(特別是en_AU和en_CA)處理日期的方式發(fā)生了變化。有關(guān)更多詳細信息,請查看此處:-
https://bugs.openjdk.java.net/browse/JDK-8211750
我必須弄清楚在這種情況下我必須做什么,但至少我理解這個問題。
推薦答案
原來是區(qū)域設置問題。在Java 8和Java 11之間,某些地區(qū)(例如en_AU和en_CA)處理日期的方式發(fā)生了變化。有關(guān)更多詳細信息,請查看此處:-
https://bugs.openjdk.java.net/browse/JDK-8211750
我必須弄清楚在這種情況下我必須做什么,但至少我理解這個問題
這篇關(guān)于Joda Date Time在Java 8和Java 11之間返回的結(jié)果非常不同的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,