2016-10-18 8 views
0

나는 카운트 다운처럼 안드로이드 애플 리케이션에서 일하고있다. 이 시점에서 나는 몇 가지 기본적인 기능을 수행하고있다.android- dd : hh : mm : ss from millisec (dd/mm/yyyy와 같지 않음)

Runnable updater; 
    int b = 0; 

    void updateTime(final int timeString) // passing milliseconds 
     { 
     b = timeString; 
     timer = (TextView) findViewById(R.id.timerText); 
     final Handler timerHandler = new Handler(); 

     updater = new Runnable() { 
      @Override 
      public void run() { 
       if (b >= 1000) { 
        timer.setText("" + b); 
        //decrease 1 sec 
        b = b - 1000; 
        timerHandler.postDelayed(updater, 1000); 
       } else { 
        timerHandler.removeCallbacks(updater); 
       } 
      } 
     }; 
     timerHandler.post(updater); 
    } 

위의 코드에서 매개 변수로 밀리 초를 전달한 다음 나머지 시간을 timer textview에 인쇄하려고했습니다. 매초마다.

잘 작동합니다. 그것의 업데이트 textview. 추천 나는 파라미터 후 출력으로서 5000을 통과한다고 가정 3000 등 on..and 1,000

에 도달 한 후 정지되지만 이제 문제는 일에 해당 밀리 변환 할 것이다 : 인사 : 분 : 초 다음 인쇄해야합니다. 그래서 시도해 보니

Runnable updater; 
int b = 0; 
void updateTime(final int timeString) { 
    b = timeString; 
    timer = (TextView) findViewById(R.id.timerText); 
    final Handler timerHandler = new Handler(); 

    updater = new Runnable() { 
     @Override 
     public void run() { 
      if (b >= 1000) { 
       int Final=b; 
       int day,hr,min,sec; 
       day = Final/(60 * 60 * 24); 
       Final -= day * (60 * 60 * 24); 
       hr = Final/(60 * 60); 
       Final -= hr * (60 * 60); 
       min = Final/60; 
       sec = Final - min * 60; 
       timer.setText(day + " Days " + hr + " Hours " + min + " minutes " + sec + " Sec"); 

       //decrease 1 sec 
       b = b - 1000; 
       timerHandler.postDelayed(updater, 1000); 
      } else { 
       timerHandler.removeCallbacks(updater); 
      } 
     } 
    }; 
    timerHandler.post(updater); 
} 

그러나 올바른 아웃 아웃이 제공되지 않습니다. 내가 이미 ... 이 PLZ 누군가가 내가 mistake.please

을 만드는 중이라서 어디 말해 전에이 변환 기술을 사용 ...하지만 위의 경우에 작동하지 않은 참고 사항 : 을 내가 변환 할 그나마 더 millisec을 dd/mm/yyyy 형식으로 변환합니다. 5 초 5000 밀리 초 있다고 가정합시다. 따라서 핸들러 블록은 먼저 00 일 00 시간 00 분 5 초를 표시해야합니다. 매초마다 5000에서 ie 4000까지 1000을 줄여야합니다 ........ 04 초 등등 .. 00 초까지 ... (카운트 다운처럼)

+0

가능한 중복 http://stackoverflow.com/questions/625433/how-to-convert-milliseconds-to-x -mins-x-seconds-in-java) – klauskpm

+0

오, 도움이 될지도 모릅니다. 내가 그것을 시도해 보겠다 – varsha

+0

"하지만 작동하지 않는다" – njzk2

답변

0

StackOverflow에서 CountDownTimer classthis answer을 살펴보십시오.

private static final String FORMAT = "%02d:%02d:%02d"; 

new CountDownTimer(userSelectedTimeInMillis, 1000) { 

    public void onTick(long millisUntilFinished) { 

     textView.setText(""+String.format(FORMAT, 
       TimeUnit.MILLISECONDS.toHours(millisUntilFinished), TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished) - TimeUnit.HOURS.toMinutes(
       TimeUnit.MILLISECONDS.toHours(millisUntilFinished)), TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) - TimeUnit.MINUTES.toSeconds(
        TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished))));    
    } 

    public void onFinish() { 
     textView.setText("done!"); 
    } 
}.start(); 
[밀리 세컨드로 변환하는 방법은 자바에서 "X의 분, 초 X"?] (의
+1

@Srikar Reddy, 위의 링크를 사용해 주셔서 감사합니다. 기본적으로 저의 실수는 제가 사용했던 변환 기술이 초에서 초의 기술이었습니다 : hr : min : sec ... 그리고 총 시간은 밀리 초입니다 ... 정말 고마워요. – varsha