2012-09-17 99 views
5

我需要从毫秒格式化秒和分钟。我正在使用countdownTimer。有没有人有sugestions?我看着乔达的时间。但所有我需要的是一种格式,所以我有1:05而不是1:5。感谢格式化秒和分钟

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

你已经看过成SimpleNumberFormat?或者,如果总数小于10,则可以在整数左侧附加一个“0”。 – BlackVegetable

+0

我不确定它是否会满足您的整个需求,但它可能值得一看[PrettyTime](http:///ocpsoft.org/prettytime/ – MadProgrammer

回答

26

你可以通过做这样的一个真正的懒办法标准的日期格式化类,但这可能有点重量级。我只是使用String.format方法。例如:

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

太棒了!那正是我想要的!即时通讯不知道我明白“%d:%02d”我自己尝试了这一点,并没有得到它的权利。谢谢! –

+1

%表示置换,0表示置零,2表示置宽,d表示十进制数。以下是文档:http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html –

6

只要你知道你会不会有超过60分钟只作一个日期和使用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

我使用了Apache Commons StopWatch类。它的toString方法的默认输出类似ISO8601,小时:分钟:秒。毫秒。

Example of Apache StopWatch

2

我会使用

org.apache.commons.lang.time.DurationFormatUtils.formatDuration(millisUntilFinished, "mm:ss")