2015-12-08 5 views
-4

я сделал, результатом которого дисплей класса в mmm:ss форматеКак преобразовать миллисекунды в формат "mmm: ss"?

Ниже приведен код:

class CountDown extends CountDownTimer { 

    public CountDown(long millisInFuture, long countDownInterval) { 
     super(millisInFuture, countDownInterval); 
    } 

    @Override 
    public void onTick(long millisUntilFinished) { 
     long ms = millisUntilFinished; 
     String text = String.format("%03d:%02d", 
       TimeUnit.MILLISECONDS.toMinutes(ms) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(ms)), 
       TimeUnit.MILLISECONDS.toSeconds(ms) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(ms))); 
     tvTimer.setText(text); 
    } 


    @Override 
    public void onFinish() { 
     try { 
      new AlertDialog.Builder(MCQActivity.this) 
        .setTitle("Time is over") 
        .setMessage("Your time is finished, Click on ok to go result page") 
        .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int which) { 
          dialog.dismiss(); 
          saveWorkAndShowResult(); 

         } 
        }) 
        .setIcon(android.R.drawable.ic_dialog_alert) 
        .show(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 

Если я передаю

mCountDownTimer = new CountDown(1000 * 60 * 30, 1000); 
mCountDownTimer.start(); 

Он работает нормально и показывает мне 30 mins

Но если я хочу показать 180 min

mCountDownTimer = new CountDown(1000 * 60 * 180, 1000); 

Он начинает с 60 min

Может кто-нибудь помочь мне, как решить эту проблему?

+0

Возможно, потому что в вашем форматировании нет «части часа» –

+0

@RC. спасибо за ваше предложение, пожалуйста, помогите мне, как решить эту проблему. –

+0

С «сырым» вычислением: https://ideone.com/Aa02CG –

ответ

1

Вашего код сводится к сумме минут, за исключением каких-либо часов, просто удалите бит, который говорит - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(ms), чтобы исправить эту

+0

Большое вам спасибо :) –

0

Вы можете использовать функции (-ы) для конвертации в вашем коде;

 Long hour = TimeUnit.HOURS.convert(millisUntilFinished, TimeUnit.MILLISECONDS); 
     millisUntilFinished= millisUntilFinished% (1000 * 60 * 60); 
     Long minutes = TimeUnit.MINUTES.convert(millisUntilFinished, TimeUnit.MILLISECONDS); 
     millisUntilFinished= millisUntilFinished% (1000 * 60); 
     Long seconds = TimeUnit.SECONDS.convert(millisUntilFinished, TimeUnit.MILLISECONDS); 
     millisUntilFinished= millisUntilFinished% 1000; 
     Long milisec = millisUntilFinished; 

затем только что прошлый, чтобы изменить ваш форматировщик строки;

 String text = String.format("%03d:%02d", minutes , seconds); 
0

даты вара = новую Дату ($ («# даты»). Val ()); date.setTime (date.getTime() - date.getTimezoneOffset() * 60 * 1000);

Смежные вопросы