2012-09-18 11 views
6

He estado usando una muestra del temporizador de cuenta atrás de Android para crear una cuenta regresiva hasta una fecha determinada.android countdown timer time

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(); 

me preguntaba cómo puedo establecer el tiempo y la fecha? actualmente está ocultándose hasta la medianoche. me gustaría que fuera 15:00

gracias de antemano

+0

hola. perdon por la confusion. la aplicación cuenta atrás hasta el 20 de septiembre de 2012 00:00 (así que la medianoche (00:00) del 20 de septiembre de 2012 mTextField dirá hecho –

+0

intenté cambiarlos pero la cuenta atrás se detiene –

+0

millis 2 es la fecha y hora actual, millis es el fecha actual. Si cambio milis, detiene la cuenta regresiva –

Respuesta

6

Ésta es tu problema:

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

Ajusta la fecha futura, pero no el tiempo futuro de día (en lugar, se establece el booleano allDay en verdadero), por lo que el valor predeterminado es 00:00.

Desde el android API:

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

Así que trate

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

de 15:00, 20 de agosto de 2012.

+0

aha. Lo estaba haciendo mal. Tenía timerSet.set (15,00,00,20,8,2012) –