到达下一个警报的时间,以秒或毫秒为单位

时间:2011-11-15 09:01:59

标签: android alarmmanager alarm android-alarms

使用此代码,我可以使用“Wed 10:10”之类的字符串,

String nextAlarm = Settings.System.getString(getContentResolver(),
    Settings.System.NEXT_ALARM_FORMATTED);

但是我希望下一次闹钟的值为秒。那可能吗 ? 如果我能够读取描述字段的值以及启用此警报的日期,对我来说也会很好。

1 个答案:

答案 0 :(得分:1)

您需要按照以下方式执行此操作

private void updateAlarmDate(String nextAlarm) {
    if (nextAlarm.length()==0 || nextAlarm == "") {
        return;
    }
    else
    {
        DateFormat sdf = new SimpleDateFormat("EEE hh:mm aa");
        Date alarmDate = null;
        try {
            alarmDate = sdf.parse(nextAlarm);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        int alarmDay = alarmDate.getDay();
        Calendar now = Calendar.getInstance();
        Date currentDate = now.getTime();
        int todayDay = currentDate.getDay();
        int daysDiff = 0;
        if (todayDay > alarmDay) {
            daysDiff = ((7 + (alarmDay - todayDay)) % 7) + 1;
        } else {
            daysDiff = ((7 + (alarmDay - todayDay)) % 7);
        }
        now.add(Calendar.DATE, daysDiff);
        AlarmFulldate = now.getTime();
        AlarmFulldate.setHours(alarmDate.getHours());
        AlarmFulldate.setMinutes(alarmDate.getMinutes());
        AlarmFulldate.setSeconds(0);
    }
}    

long millis = AlarmFulldate.getTime() - new Date()。getTime(); 变量millis将有毫秒。

使用以下代码从millis获取天,小时和分钟

days = (int) (millis / (1000 * 60 * 60 * 24));
hours = (int) ((millis - (1000 * 60 * 60 * 24 * days)) / (1000 * 60 * 60));
min = (int) (millis - (1000 * 60 * 60 * 24 * days) - (1000 * 60 * 60 * hours))/(1000 * 60);

希望这会对你有所帮助