基本上我已经使用java servlets构建了一个约会调度程序webapp。 它在很大程度上依赖于javas Calendar。 整个事情都是在我的macbook上用jdk 1.6运行的山狮开发的。
现在在我的电脑上进行测试时,我得到了一些奇怪的结果。
运行:
System.out.println("selected = "+selected);
Calendar now = Calendar.getInstance();
System.out.println("a "+now.getTime());
now.setTimeInMillis(selected);
System.out.println("b "+now.getTime());
now.set(Calendar.MILLISECOND,0);
now.set(Calendar.SECOND,0);
now.set(Calendar.MINUTE,0);
now.set(Calendar.HOUR_OF_DAY,6);//start from 6am
System.out.println("d "+now.getTime());
now.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
System.out.println("e "+now.getTime());
PC上的将输出:
selected = 1355835600000
a Wed Dec 19 19:35:36 EST 2012
b Wed Dec 19 00:00:00 EST 2012
d Wed Dec 19 06:00:00 EST 2012
e Sun Dec 23 06:00:00 EST 2012
然而在mac上它会输出:
selected = 1355835600000
a Wed Dec 19 19:33:57 EST 2012
b Wed Dec 19 00:00:00 EST 2012
d Wed Dec 19 06:00:00 EST 2012
e Sun Dec 16 06:00:00 EST 2012
正如我们在这里看到的,如果我建立一个代表这些值的每周计划的表格,那么mac将在本周所包含的星期日早上6点开始。 但是电脑将在下周的星期日早上6点开始。
这意味着我创建的任何约会在电脑上都是不同步的(不同的日期到期待) 注意:pc已经使用jdk1.6和jdk1.7进行了测试
有谁知道这背后的任何解决方案或原因?
由于
答案 0 :(得分:4)
可能这是一个区域/时区问题,两台机器可能会有所不同 通过硬编码确保两个实例使用相同的区域设置,例如:
Calendar.getInstance(Locale.US);
else getInstance()将使用系统的默认语言环境。