Calendar.get(Calendar.DATE)的值错误

时间:2019-03-26 22:57:43

标签: java android

我有一个提醒应用程序,用户可以在其中创建一次性提醒和可重复提醒。

当用户选择一次性提醒时,将创建一个提醒对象,并在构造函数中调用以下代码段,程序将尝试计算应该终止的确切日期。

但是,第二天我总是得到DATE组件。无论我设置的是今天的时间,还是设置今天的时间都没有。这可能有什么问题?

public void calculateExactDate() {
    if (Utils.isReminderOnlyOnce(days)) {
        Calendar now = Calendar.getInstance();
        Calendar reminderDate = Calendar.getInstance();

        reminderDate.set(Calendar.HOUR, hour);
        reminderDate.set(Calendar.MINUTE, minute);
        reminderDate.set(Calendar.SECOND, 0);

        if (now.getTimeInMillis() > reminderDate.getTimeInMillis()) {
            reminderDate.add(Calendar.DATE, 1);
        }

        year = reminderDate.get(Calendar.YEAR);
        month = reminderDate.get(Calendar.MONTH) + 1;
        day = reminderDate.get(Calendar.DATE);
    }
}

编辑: 也许值得一提的是,添加一天的代码永远不会运行。

1 个答案:

答案 0 :(得分:0)

如果我将两个日历设置为相等(或者至少这就是我的想法),我试图获得差异。差异约为-43200000毫秒,即12小时。

我知道这与上午/下午或24小时问题有关。是的,我检查了:Calendar.HOUR字段用于am / pm格式,Calendar.HOUR_OF_DAY用于24小时制。

因此,我不必使用HOUR,而必须使用Calendar。 HOUR_OF_DAY 常量,它可以正常工作。