有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

关于java的日期问题。util。日历

我试图通过以下代码来理解这种行为。 我所在的时区是UTC-7(亚利桑那州)

Calendar cal = Calendar.getInstance();
cal.set(Calendar.MINUTE,40);
cal.set(Calendar.AM_PM,Calendar.PM);
System.out.println("1 UTC -4 Hour:" + cal.get(Calendar.HOUR_OF_DAY));
System.out.println("1 UTC -4 Day:" + cal.get(Calendar.DAY_OF_MONTH));
System.out.println("1 UTC -7 Time Stamp:" + cal.getTime().toString());
cal.set(Calendar.HOUR,12);
System.out.println("2 UTC -4 Hour:" + cal.get(Calendar.HOUR_OF_DAY));
System.out.println("2 UTC -4 Day:" + cal.get(Calendar.DAY_OF_MONTH));
System.out.println("2 UTC -7 Time Stamp:" + cal.getTime().toString());
cal.setTimeZone(TimeZone.getTimeZone("America/New_York")); //set time zone to UTC -4
System.out.println("3 UTC -4 Hour:" + cal.get(Calendar.HOUR_OF_DAY));
System.out.println("3 UTC -4 Day:" + cal.get(Calendar.DAY_OF_MONTH));
System.out.println("3 UTC -7 Time Stamp:" + cal.getTime().toString());
cal.set(Calendar.HOUR,12);
System.out.println("4 UTC -4 Hour:" + cal.get(Calendar.HOUR_OF_DAY));
System.out.println("4 UTC -4 Day:" + cal.get(Calendar.DAY_OF_MONTH));
System.out.println("4 UTC -7 Time Stamp:" + cal.getTime().toString());

它生成以下输出:

1 UTC -4 Hour:12
1 UTC -4 Day:27
1 UTC -7 Time Stamp:Tue Sep 27 12:40:37 MST 2011
2 UTC -4 Hour:0
2 UTC -4 Day:28
2 UTC -7 Time Stamp:Wed Sep 28 00:40:37 MST 2011
3 UTC -4 Hour:3
3 UTC -4 Day:28
3 UTC -7 Time Stamp:Wed Sep 28 00:40:37 MST 2011
4 UTC -4 Hour:12
4 UTC -4 Day:28
4 UTC -7 Time Stamp:Wed Sep 28 09:40:37 MST 2011

我不明白的是为什么第一个卡尔。set(Calendar.HOUR,12)使日期切换到第二天。对一个值使用add()会导致调整其他值,这是有道理的,但set()也这样做是没有意义的

有没有办法在保留所有其他值的情况下创建一个绝对集()


共 (0) 个答案