2012-09-17 41 views
5

Tôi cần định dạng giây và phút từ mili giây. Tôi đang sử dụng countdownTimer. có ai có sugestions? Tôi nhìn vào thời gian joda. Nhưng tất cả những gì tôi cần là một định dạng để tôi có 1:05 chứ không phải 1: 5. nhờĐịnh dạng giây và phút

private void walk() { 
    new CountDownTimer(15000, 1000) { 
     @Override 
     public void onFinish() { 
      lapCounter++; 
      lapNumber.setText("Lap Number: " + lapCounter); 
      run(); 
     } 

     @Override 
     public void onTick(long millisUntilFinished) { 
      text.setText("Time left:" + millisUntilFinished/1000); 
     } 
    }.start(); 
} 
+0

Các bạn đã nhìn vào SimpleNumberFormat? Ngoài ra, bạn luôn có thể nối thêm '0' bên trái số nguyên nếu nó nhỏ hơn 10. – BlackVegetable

+0

Tôi không chắc liệu nó có đáp ứng được toàn bộ nhu cầu của bạn hay không, nhưng nó có thể đáng xem [PrettyTime] (http://ocpsoft.org/prettytime/) – MadProgrammer

Trả lời

26

Bạn có thể làm điều đó bằng các lớp định dạng ngày chuẩn, nhưng có thể hơi nặng một chút. Tôi chỉ sử dụng phương thức String.format. Ví dụ:

int minutes = time/(60 * 1000); 
int seconds = (time/1000) % 60; 
String str = String.format("%d:%02d", minutes, seconds); 
+0

Tuyệt vời! đó là chính xác những gì tôi đang tìm kiếm! im không chắc chắn tôi hiểu được "% d:% 02d" Tôi đã cố gắng này trên của riêng tôi và didnt làm cho nó đúng. Cảm ơn! –

+1

% báo hiệu thay thế, 0 có nghĩa là không-pad số, 2 có nghĩa là làm cho chiều rộng 2, và d có nghĩa là hiển thị dưới dạng số thập phân. Đây là tài liệu: http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html –

6

Một cách lười biếng thực để làm điều này miễn là bạn biết bạn sẽ không có phút hơn 60 là để chỉ làm một ngày và sử dụng SimpleDateFormat

public void onTick(long millisUntilFinished) { 
    SimpleDateFormat dateFormat = new SimpleDateFormat("mm:ss"); 
    dateFormat.setTimeZone(TimeZone.getTimeZone("GMT")); 
    Date date = new Date(millisUntilFinished); 
    text.setText("Time left:" + dateFormat.format(date)); 
} 
0

Tôi đã sử dụng lớp Apache Commons StopWatch. Sản lượng mặc định của phương thức toString là ISO8601, giờ: phút: giây.milliseconds.

Example of Apache StopWatch

2

tôi muốn sử dụng

org.apache.commons.lang.time.DurationFormatUtils.formatDuration(millisUntilFinished, "mm:ss") 
Các vấn đề liên quan