【问题标题】:android java String.format padding zeroes before and after decimal on a doubleandroid java String.format 在 double 上的小数点前后填充零
【发布时间】:2016-06-30 23:45:05
【问题描述】:

我制作了一个快速计时器,并尝试以“00:00.00”格式显示时间,其中第一个 00 是分钟,00.00 是秒和秒的小数部分。我有以下格式代码:

// Get the delta time
long timeDelta = System.currentTimeMillis()-startTimeMillis;

int minutes;
double seconds;

// Now split
if( timeDelta>60000 ) { // Minutes
    minutes = (int)(timeDelta/60000);
    timeDelta-= minutes*60000;
}
else
    minutes = 0;

// Now for the rest
seconds = timeDelta/1000.0;

// Get the text string
final String timeString = String.format( "%1$02d:%2$02.2f", minutes, seconds );

但是字符串总是像“00:6.42”而不是“00:06.42”一样出现。如何让 String.format 用前导零小数位格式化小数?

【问题讨论】:

  • 也许 SimpleDateFormat 类对此有用

标签: java android string-formatting


【解决方案1】:

在 Java 中一个更好的方法是使用 SimpleDateFormatlike 这个:

long timeDelta = System.currentTimeMillis()-startTimeMillis;

SimpleDateFormat simpleDateFormat = new SimpleDateFormat ("mm:ss:SS");
System.out.println(simpleDateFormat.format(timeDelta));

Working example

【讨论】:

  • 你好。谢谢你的文章。如果经过的分钟数大于 59,则会出现此问题。我假设它会再次包装为 0,因为它是时间格式化程序。继续数分钟就好了。
  • 是的,这是有道理的,所以我之前的编辑将适用于这种情况。
  • 您可以在这种情况下使用TimeUnit.MILLISECONDS,如下所示:stackoverflow.com/questions/9027317/…
猜你喜欢
  • 1970-01-01
  • 2011-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-09
  • 2014-09-19
  • 2016-10-05
相关资源
最近更新 更多