0
在下面的代碼當與JDK5運行返回不同的日期(1.5.0_09)打印java.util.Date在JDK 5和JDK 6
Fri May 03 00:00:00 GMT 3912
5/3/12 5:30 AM
並且當與JDK6運行(1.6.0_23)打印
Fri May 03 00:00:00 IST 3912
5/3/12 12:00 AM
很明顯,區別是因爲使用的時區,所以Date對象被創建。但是,當JDK升級時,這不會對現有代碼造成問題嗎?這種行爲是否記錄在某處或者我錯過了什麼?
class TimeTest {
public static void main(String[] args) {
Date d = new Date(2012, 04, 3);
Locale l = new Locale("en", "US","");
DateFormat df= DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, l);
TimeZone t = TimeZone.getTimeZone("Asia/Calcutta");
df.setTimeZone(t);
System.out.println(d);
System.out.println(df.format(d));
}
}
當您通過調用* deprecated *構造函數開始時,您不應該對關於不一致結果的SO報警。是的,它會導致問題,這就是它被棄用的原因。 –
使用不推薦的方法本身並不是真正的理解Java版本之間不同行爲的好方法。在這種情況下,Date構造函數在兩種情況下都完全相同,不同之處在於不推薦使用的TimeZone.getTimeZone方法。 – jarnbjo