如何重置其他字段后重置Calendar对象中的时间参数?

时间:2017-06-21 23:20:55

标签: java android

我获取当前的Calendar对象并记录其值

Calendar now = Calendar.getInstance();
Log.v(TAG,now.toString())

我将时间设置为now并记录值

now.set(Calendar.HOUR, 20 % 12);
now.set(Calendar.MINUTE,00);
now.set(Calendar.HOUR_OF_DAY,20);
now.set(Calendar.SECOND,0);
now.set(Calendar.MILLISECOND,0);
Log.v(TAG,now.toString())

当我对两个日志进行并排比较时,我看到了差异

java.util.GregorianCalendar[time=1498086510685,areFieldsSet=true... 
java.util.GregorianCalendar[time=?,areFieldsSet=false... 

所有其他字段看起来都是相同的

我想我有两个问题

  1. 如何将time设置为正确值?
  2. 如果重置areFieldsSet参数,会自动设置time吗?

1 个答案:

答案 0 :(得分:1)

如果您已阅读java.util.Calendar的Javadoc,您应该这样做,您会看到

  

set(f, value)将日历字段f更改为value。此外,它还设置一个内部成员变量,以指示日历字段f已更改。虽然日历字段f会立即更改,但在下次调用timeget(),{{1}之前,不会重新计算日历的getTime()值(以毫秒为单位) },getTimeInMillis()add()

调用其中一个指示的函数。