该问题发生在以下情况:
public void setCal(final Calendar calendar) {
Calendar c1 = pickedDate;
Calendar c2 = pickedDate;
Log.d(TAG, c1.getTimeInMillis());
Log.d(TAG, c2.getTimeInMillis());
c1.set(Calendar.HOUR_OF_DAY, 10);
c1.set(Calendar.MINUTE, 20);
c2.set(Calendar.HOUR_OF_DAY, 18);
c2.set(Calendar.MINUTE, 30);
Log.d(TAG, c1.getTimeInMillis());
Log.d(TAG, c2.getTimeInMillis());
}
在对两个日历调用 set()
方法之前和之后使用 getTimeInMillis()
比较值后,我发现它们是相同的。知道为什么会发生这种情况吗?
最佳答案
这是因为这里:
Calendar c1 = pickedDate;
Calendar c2 = pickedDate;
您将这两个对象设置为pickedDate
。因此,任何对象的任何更改都会更改 pickedDate
中的值,实际上,实例 c1
和 c2
都是如此。解决这个问题的一种方法是将这些行更改为:
Calendar c1 = (Calendar)pickedDate.clone();
Calendar c2 = (Calendar)pickedDate.clone();
这会将它们设置为 pickedDate
的克隆,即它们不会相同。
关于java - 更改小时和分钟后,日历 getTimeInMillis() 返回相同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36309438/