Java 日期时区打印不同年份的不同时区,需要解决方法编辑:-
在测试我的应用程序时,我遇到了一个奇怪的问题。当我把一个日期放在1945年之前的日期时,它会改变时区。
我有这个简单的程序来显示问题。
public static void main(String[] args) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ssZ");
Calendar calendar = Calendar.getInstance();
System.out.println("**********Before 1945");
calendar.set(1943, Calendar.APRIL, 12, 5, 34, 12);
System.out.println(format.format(calendar.getTime()));
System.out.println(calendar.getTime());
System.out.println("**********After 1945");
calendar.set(1946, Calendar.APRIL, 12, 5, 34, 12);
System.out.println(format.format(calendar.getTime()));
System.out.println(calendar.getTime());
}
我得到的输出如下:-
**********Before 1945
1943-04-12 05:34:12+0630
Mon Apr 12 05:34:12 IDT 1943
**********After 1945
1946-04-12 05:34:12+0530
Fri Apr 12 05:34:12 IST 1946
对于第一个,我将其作为和,而对于第二个,我得到的是预期的。+0630
IDT
+0530
IST
编辑:-
在看了@Elliott弗里施的答案后,我尝试了1942年之前的日期:-
calendar.set(1915, Calendar.APRIL, 12, 5, 34, 12);
System.out.println(format.format(calendar.getTime()));
System.out.println(calendar.getTime());
输出:-
1915-04-12 05:34:12+0553
Mon Apr 12 05:34:12 IST 1915
在这里,它再次说,但显示.不应该是.IST
+0553
+0530
只是为了比较,我在javascript中尝试了同样的事情:-
new Date("1946-04-12 05:34:12") //prints Fri Apr 12 1946 05:34:12 GMT+0530 (IST)
new Date("1943-04-12 05:34:12") //prints Fri Apr 12 1943 05:34:12 GMT+0530 (IST)
new Date("1915-04-12 05:34:12") //prints Mon Apr 12 1915 05:34:12 GMT+0530 (IST)
这工作正常。我想知道为什么java会受到它的影响,如果这是一个已知的问题,那么可能的解决方法是什么。
提前致谢。