一回のCalendarのsetとaddを覚えます。
Calendar
Calendarは日付ツール類で、日付に対して操作することができます。たとえば:
ソース解析
addのソースコード
希望時間の増加または減少だけであれば、必ず
Calendarは日付ツール類で、日付に対して操作することができます。たとえば:
Calendar c = Calendar.getInstance();
// , 24 ,
c.add(Calendar.HOUR_OF_DAY, -1);
// -1, ,-1 , , 23 ,
c.set(Calendar.HOUR_OF_DAY, -1);
上記の例:現在の時間は2018-08-=03=09==52:09で、addの後の時間は2018-08-=03==08=52:09セットの後の時間は2018-08=02=23==52:09ソース解析
addのソースコード
switch (field) {
// Handle the time fields here. Convert the given
// amount to milliseconds and call setTimeInMillis.
case HOUR:
case HOUR_OF_DAY:
delta *= 60 * 60 * 1000; // hours to minutes
break;
case MINUTE:
delta *= 60 * 1000; // minutes to seconds
break;
case SECOND:
delta *= 1000; // seconds to milliseconds
break;
case MILLISECOND:
break;
セットのソースコードinternalSet(field, value);
final void internalSet(int field, int value)
{
fields[field] = value;
}
getTimeのソースコードの一部long timeOfDay = 0;
if (isFieldSet(fieldMask, HOUR_OF_DAY)) {
timeOfDay += (long) internalGet(HOUR_OF_DAY);
} else {
timeOfDay += internalGet(HOUR);
// The default value of AM_PM is 0 which designates AM.
if (isFieldSet(fieldMask, AM_PM)) {
timeOfDay += 12 * internalGet(AM_PM);
}
}
// HOUR_OF_DAY -1, -60, 60 ,
timeOfDay *= 60;
以上より希望時間の増加または減少だけであれば、必ず
add
を使用し、設定時間が希望される場合はset
を使用する。