Установить будильник по календарю-объекту - PullRequest
1 голос
/ 05 декабря 2011

Я хочу запустить будильник в определенную дату, установленную пользователем. Проблема в том, что время, в которое должен включиться сигнал тревоги, принимает очень запутанное значение. Вот метод установки времени и т. Д. Строка taskDate - это дата, выбранная пользователем, которая выглядит примерно так: 5-12-2011:

private void startAlarm(String taskDate) 
{
    AlarmManager alarmManager = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);

    Calendar calendar =  Calendar.getInstance();
    calendar.setTimeInMillis(System.currentTimeMillis());

    String [] taskDateArray = taskDate.split("-");
    int day = Integer.parseInt(taskDateArray[0].trim());
    int month = Integer.parseInt(taskDateArray[1].trim()); 
    int year = Integer.parseInt(taskDateArray[2].trim());
    Log.w(TAG, "Year " + year + " Month " + month + " Day " + day);

    calendar.set(Calendar.YEAR, year);
    calendar.set(Calendar.MONTH, month - 1); // Month is zero-based
    calendar.set(Calendar.DAY_OF_MONTH, day);

    long alarmTime = calendar.getTimeInMillis();  

    Intent intent = new Intent(this, RememberMeService.class);
    PendingIntent pendingIntent = PendingIntent.getService(this, 0, intent, 0);
    alarmManager.set(AlarmManager.RTC, alarmTime, pendingIntent);
}

Значение alarmTime всегда превышает три миллиарда, и я понятия не имею, почему.

1 Ответ

1 голос
/ 05 декабря 2011

Это внутреннее представление даты, то есть

количество миллисекунд со стандартного базового времени, известного как эпоха ", а именно 1 января 1970 года, 00:00:00 по Гринвичу.

как указано в дате Javadoc

...