android和GregorianCalendar之间的惊人差异 - bug?

时间:2014-07-26 09:01:10

标签: java android

我有以下代码:

public static final long ONE_DAY_IN_MILLISECONDS = 24*60*60*1000;
(...)
Date newNextTestDate = new Date ( (new Date().getTime()) + newInterval*ONE_DAY_IN_MILLISECONDS);
System.out.println("data: " +newNextTestDate.getTime());

GregorianCalendar tmp2Date = new GregorianCalendar ();
tmp2Date.add(GregorianCalendar.DAY_OF_MONTH, newInterval);
System.out.println(" data2: " +tmp2Date.getTimeInMillis());

//where newInterval is number of days (int)

在Android 4.0.4和4.2.2中,在2/3的情况下,显示的值是相同的(有时是微小的差异)。然而,在1/3的情况下,存在...... 3600000(或类似于3600001的类似物)的差异,相当于一小时。此外,如果我在一个循环中有这个,它似乎是完全随机的,在同一设备上,没有触及任何系统设置,有时存在差异,有时不存在。 Android实施日期是否有任何错误?

1 个答案:

答案 0 :(得分:0)

我不知道问题的原因是什么,但我找到了解决方法。

当我使用new Date()而不是(new GregorianCalendar()).getTime时,我会使用{{1}}这种奇怪的效果"不会出现。