java – Calendar set()方法没有设置适当的时间

我在我的日历实例上设置时间如下

private Calendar mCalendar = Calendar.getInstance();

public void onTimeSet(int hourOfDay, int minute, int second) {
    int year = mCalendar.get(Calendar.YEAR);
    int monthOfYear = mCalendar.get(Calendar.MONTH);
    int dayOfMonth = mCalendar.get(Calendar.DAY_OF_MONTH);

    Calendar lCalendar = Calendar.getInstance();
    lCalendar.set(year, monthOfYear, dayOfMonth, hourOfDay, minute);

    Date lDate = lCalendar.getTime();
    if (lDate.before(new Date())) {
        return;
    } else {
        mCalendar.set(year, monthOfYear, dayOfMonth, hourOfDay, minute);
        setItemTime();
    }
}

但是,在Calendar lCalendar和mCalendar的实例上调用getTime()时,我得到的日期实例化时间不是来自日历实例上设置的hourOfDay和minute参数.此外,如果我在任一个实例上再次调用getTime()方法,我会得到正确的时间.

为什么会发生这种情况,我该如何解决这个问题呢?

最佳答案 通过Section,Field Manipulation
at Calendar Documentation

基本上,您设置字段而不是时间并尝试获取时间而不是单个设置字段.根据文档,调用set(…)函数后,日历时间不会立即更新.

在那里,阅读之间的线,

The specifics are determined by the concrete calendar class.

所以我想,无法提供通用答案.

点赞