gpt4 book ai didi

Java 日历,行为不同 OSX Windows

转载 作者:可可西里 更新时间:2023-11-01 13:26:38 26 4
gpt4 key购买 nike

基本上,我已经使用 java servlet 构建了一个约会调度程序 webapp。它严重依赖javas Calendar。整个事情是在我的 macbook 上用 jdk 1.6 运行 mountain lion 开发的。

现在在我的电脑上测试时,我得到了一些奇怪的结果。

运行:

   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测试

有人知道这背后的任何解决方案或原因吗?

谢谢

最佳答案

可能,这是一个区域设置/时区问题,两台机器上可能不同。
通过硬编码确保两个实例使用相同的语言环境,例如:

Calendar.getInstance(Locale.US);

否则 getInstance() 将使用您系统的默认语言环境。

关于Java 日历,行为不同 OSX Windows,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13948436/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com