【问题标题】:Handle Days And Hours Before Today & Now In Time Picker处理今天之前和现在的时间选择器的日期和时间
【发布时间】:2015-05-13 12:20:25
【问题描述】:

在我的 android 应用中,我有一个简单的 UI,其中包含两个元素(小部件):一个微调器,让用户可以选择 DAY_OF_WEEK 和一个 TimePicker,让他们选择一天中的时间和分钟 (AM/PM)。

这是用户界面:

如果用户更新其设置,可能会出现三种结果:

  1. 用户选择今天之前的一天(例如,如果今天是星期三,他们选择星期四或星期五等)。在这种情况下,一切都应该没问题。
  2. 用户选择今天之前的一天(例如,如果今天是星期三,他们选择星期二或星期一等)。在这种情况下,我需要弄清楚如何为所选日期设置闹钟,但下周!
  3. 用户选择了今天,但时间早于现在(例如,如果今天是星期三,他们选择今天并选择像凌晨 4 点这样的时间(现在是早上 6 点 54 分)。在这种情况下,我需要设置选定日期的闹钟(与今天同一天),但由于时间已经过去,我必须在下周完成。

我不知道为什么我在这里感到困惑,但这是我尝试编写的处理这种情况的代码:

    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 是一个整数,相当于用户从微调器中选择的日期。

我的问题是:解决这个问题的最佳方法是什么?我只是想确保当用户选择 Today[WEDNESDAY] 并且时间少于现在时,我将日历设置为下周,因为那个小时已经过去了。当用户选择今天之前的一天 [例如 TUESDAY、MONDAY、SUNDAY] 时,也应如此 - 应将闹钟设置为所选日期的下周。

提前谢谢你。

【问题讨论】:

标签: java android alarm timepicker


【解决方案1】:

在我看来,将所有日历值转换为时间戳,对其进行数学运算,然后再将它们转换回来,这总是一个好主意。

让你更轻松。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-24
    • 2017-06-24
    • 2014-05-25
    • 1970-01-01
    • 1970-01-01
    • 2013-11-25
    • 1970-01-01
    • 2019-04-12
    相关资源
    最近更新 更多