处理今天之前的日子和时间&现在在时间选择器

时间:2015-05-13 12:20:25

标签: java android alarm timepicker

在我的Android应用程序中,我有一个带有两个元素(小部件)的简单UI:一个微调器,允许用户选择DAY_OF_WEEK&一个TimePicker让他们选择时间和分钟(上午/下午)。

以下是用户界面:

Spinner and time picker

如果用户更新其设置,则有三种可能的结果:

  1. 用户选择一天比今天更早(例如,如果今天是星期三,他们选择星期四或星期五等)。在这种情况下,一切都应该完全正常。
  2. 用户选择今天之前的一天(例如,如果今天是星期三,他们选择星期二或星期一等)。在这种情况下,我需要弄清楚如何设置下周所选日期的警报!
  3. 用户选择今天但是比现在更早的时间(例如,如果今天是星期三,他们选择今天并选择像4AM这样的时间(现在是6:54 AM)。在这种情况下,我需要设置所选日期(与今天同一天)的警报,但由于时间已过,我必须在下周完成。
  4. 我不知道为什么我在这里感到困惑,但这里是我试图编写的代码来处理这种情况:

        int hour = Utils.getValueFromSharedPrefs(context.getString(R.string.hour_key), activity);
        int minutes = Utils.getValueFromSharedPrefs(context.getString(R.string.minute_key), activity);
    
        if (day >= Calendar.DAY_OF_WEEK){
            if (hour >= Calendar.HOUR_OF_DAY){
                calendar.set(Calendar.DAY_OF_WEEK, day);
                calendar.set(Calendar.HOUR_OF_DAY, hour);
                calendar.set(Calendar.MINUTE, minutes);
                calendar.set(Calendar.SECOND, 0);
            }else{
                int diff = Calendar.DAY_OF_WEEK - day;
                calendar.set(Calendar.DAY_OF_WEEK, Calendar.DAY_OF_WEEK + diff);
                calendar.set(Calendar.HOUR_OF_DAY, hour);
                calendar.set(Calendar.MINUTE, minutes);
                calendar.set(Calendar.SECOND, 0);
            }
        }else{
            calendar.set(Calendar.DAY_OF_WEEK, day);
            calendar.set(Calendar.HOUR_OF_DAY, hour);
            calendar.set(Calendar.MINUTE, minutes);
            calendar.set(Calendar.SECOND, 0);
        }
    

    变量day是用户从微调器中选择的日期的等效整数。

    我的问题是:解决这个问题的最佳方法是什么?我只想确保当用户选择今天[WEDNESDAY]并且时间少于现在时,我将下一周的日历设置为该小时已经过去。当用户选择今天前一天[例如星期二,星期一,星期日]时,情况也应如此 - 警报应设置为所选日的下周。

    提前谢谢。

1 个答案:

答案 0 :(得分:1)

根据我的说法,将所有日历值转换为时间戳,对其进行数学计算,然后将其转换回来,这总是一个好主意。

让您更轻松。