Как преобразовать миллисекунду в секунду

В моем сервисе есть следующий код.

    countDownTimer = new CountDownTimer(60000 * 3, 1000) {
        @Override
        public void onTick(long l) {
            intentDSU.putExtra("remaind", TimeUnit.MILLISECONDS.toSeconds(l));
            sendBroadcast(intentDSU);
        }

        @Override
        public void onFinish() {
            postHandler();

            intentDSU.putExtra("remaind", 0);
            sendBroadcast(intentDSU);

            countDownTimer.start();
        }
    };
    countDownTimer.start();

Это нормально работает, но когда я пытаюсь преобразовать секунды в минуты и оставшиеся секунды на моей активности

private void updateGUI(Intent intent){
    if (intent.getExtras() != null){
        long remaind = intent.getLongExtra("remaind", 0);
        if (remaind == 0){
            onRefresh();
        }

        long minutes = TimeUnit.SECONDS.toMinutes(remaind) - (TimeUnit.SECONDS.toHours(remaind)* 60);
        long seconds = TimeUnit.SECONDS.toSeconds(remaind) - (TimeUnit.SECONDS.toMinutes(remaind) *60);

        MenuItem menuItem = menu.findItem(R.id.action_timer);
        if (menuItem != null){
            if (minutes > 0){
                menuItem.setTitle(String.format("%o min.", minutes));
            }
            else {
                menuItem.setTitle(String.format("%o sec.", seconds));
            }
        }
    }
}

Стал замечать необычные результаты, секунд начнутся 73 вместо 60. Понятия не имею, что не так?

2
0
1 564
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

попробуй это

long seconds = TimeUnit.MILLISECONDS.toSeconds(millis);
 long sec=TimeUnit.MILLISECONDS.toSeconds(passmillitimer);
Ответ принят как подходящий

ваш код правильный, я думаю, у вас проблема в String.format ("% o min.", минут), а здесь String.format ("% o sec.", секунды).

Попробуйте использовать это.

    MenuItem menuItem = menu.findItem(R.id.action_timer);
    if (menuItem != null){
        if (minutes > 0){
            menuItem.setTitle(String.format("%s min.", Long.toString(minutes)));
        }
        else {
            menuItem.setTitle(String.format("%s sec.", Long.toString(seconds)));
        }
    }

Другие вопросы по теме