Calendar 类中的complete()
方法执行以下操作:
protected void complete()
填写日历字段中任何未设置的字段。首先,如果尚未从日历字段值计算时间值(与 Epoch 的毫秒偏移量),则调用 computeTime() 方法。然后,调用 computeFields() 方法来计算所有日历字段值。
该complete()
方法具有以下代码:
protected void complete()
{
if (!isTimeSet)
updateTime();
if (!areFieldsSet || !areAllFieldsSet) {
computeFields(); // fills in unset fields
areAllFieldsSet = areFieldsSet = true;
}
}
我的问题是这个循环工作的意义是什么?第一个值来自
protected int[] fields
用于更新的值
long time
使用computeTime()
方法。然后使用 的值time
来更新fields
using中的值computeFields()
。在调用自身后两者中的值将保持同步,time
对吗fields
?computeTime()
还是我在这里遗漏了什么?
对于那些可能会问为什么它如此重要的人,这是因为在日历中重新计算时间的顺序通常会改变我们从中获取的时间getTime()
(或者我已经阅读过)!