таймер обратного отсчета андроида

Я использую образец таймера обратного отсчета Android, чтобы создать обратный отсчет до определенной даты.

Time TimerSet = new Time();
        TimerSet.set(20, 8, 2012); //day month year
        TimerSet.normalize(true);
        long millis = TimerSet.toMillis(true);

        Time TimeNow = new Time();
        TimeNow.setToNow(); // set the date to Current Time
        TimeNow.normalize(true);
        long millis2 = TimeNow.toMillis(true);

        long millisset = millis - millis2; //subtract current from future to set the time remaining

        final int smillis = (int) (millis); //convert long to integer to display conversion results
        final int smillis2 = (int) (millis2);

        new CountDownTimer(millisset, 1000) {
            public void onTick(long millisUntilFinished) {

                // decompose difference into days, hours, minutes and seconds 
                int weeks = (int) ((millisUntilFinished / 1000) /
                        604800);
                int days = (int) ((millisUntilFinished / 1000) / 86400);
                int hours = (int) (((millisUntilFinished / 1000) - (days
                        * 86400)) / 3600);
                int minutes = (int) (((millisUntilFinished / 1000) - ((days
                        * 86400) + (hours * 3600))) / 60);
                int seconds = (int) ((millisUntilFinished / 1000) % 60);
                int millicn = (int) (millisUntilFinished / 1000);



                w.setText(" " +weeks);
                d.setText(" " +days);
                h.setText(" " +hours);
                m.setText(" " +minutes);
                s.setText(" " +seconds);
                mTextField.setText(smillis + " " + smillis2 + " " +
                        millicn + "Time remaining: " +weeks +"weeks " +days + " days " + hours
                        + " hours: " + minutes+ " minutes: "
                        + seconds + " seconds: " );

            }

            public void onFinish() {
                mTextField.setText("done!");
            }
        }.start();

мне было интересно, как я могу установить время, а также дату? в настоящее время это ocunting до полуночи. я бы хотел, чтобы это было 15:00

заранее спасибо


person Tuffy G    schedule 18.09.2012    source источник
comment
Привет. Извините за недопонимание. приложение ведет обратный отсчет до 00:00 20 сентября 2012 г. (поэтому в полночь (00:00) 20 сентября 2012 г. mTextField сообщит о завершении   -  person Tuffy G    schedule 18.09.2012
comment
я пытался изменить их, но обратный отсчет останавливается   -  person Tuffy G    schedule 18.09.2012
comment
миллис 2 — текущая дата и время, миллис — текущая дата. если я меняю милли, обратный отсчет останавливается   -  person Tuffy G    schedule 18.09.2012
comment
если millis является будущей датой, то вы также должны убедиться, что она не установлена ​​на 00:00.   -  person keyser    schedule 18.09.2012
comment
TimerSet.toMillis и timerSet — это TimerSet.set(20, 8, 2012);   -  person Tuffy G    schedule 18.09.2012


Ответы (1)


Вот ваша проблема:

timerSet.set(20, 8, 2012); //day month year

Это устанавливает будущую дату, но не будущее время суток (вместо этого оно устанавливает логическое значение allDay в значение true), поэтому по умолчанию оно равно 00:00.

Из API для Android:

set(int second, int minute, int hour, int monthDay, int month, int year)

Так что попробуйте

timerSet.set(0,0,15,20,8,2012)

на 15:00 20 августа 2012 г.

person keyser    schedule 18.09.2012
comment
Ага. я делал это неправильно наоборот. у меня был timerSet.set(15,00,00,20,8,2012) - person Tuffy G; 18.09.2012