我有一个提醒应用程序,用户可以在其中创建一次性提醒和可重复提醒。
当用户选择一次性提醒时,将创建一个提醒对象,并在构造函数中调用以下代码段,程序将尝试计算应该终止的确切日期。
但是,第二天我总是得到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);
}
}
编辑: 也许值得一提的是,添加一天的代码永远不会运行。
答案 0 :(得分:0)
如果我将两个日历设置为相等(或者至少这就是我的想法),我试图获得差异。差异约为-43200000毫秒,即12小时。
我知道这与上午/下午或24小时问题有关。是的,我检查了:Calendar.HOUR字段用于am / pm格式,Calendar.HOUR_OF_DAY用于24小时制。
因此,我不必使用HOUR,而必须使用Calendar。 HOUR_OF_DAY 常量,它可以正常工作。