2016-11-28 75 views
0

我想清理我的计时器为我的应用程序,但即时通讯有困难让它做我想做的事情。格式化时间删除不必要的00从计时器

有谁知道如何格式H:M:S并删除00的?

例子的时候可以这样开始:12:34:56(HH:MM:SS)

但是一旦时间达到让说○时34分56秒,去除剩余的00年代, 我有点担心表演,这就是为什么我在这里找到更有效的方式来格式化时间,因为这将被称为很多。

String.format("%02d:%02d", m, s).replaceAll("00:","");是明智的选择吗?

谢谢。

+2

我认为努力去除领先的'00'可能比仅仅使用API​​更加浪费。更不用说了,它会让您的时间数据表示不一致,较小的值只有4位(2?)而不是6位。 –

+3

'replaceAll(“00:”,“”)'不是一个好选择,请考虑'11: 00:21 => 11:21'得到错误的时间。 –

+1

您可以将日期与01:00:00进行比较,然后根据结果'hh:mm:ss'或'mm:ss'格式化。 –

回答

2

我想你可以通过只检查前两个字符可以忽略更快:

if (timeString.charAt(0) == '0' && timeString.charAt(1) == '0') 
    timeString = timeString.substring(3); 

我并不认为这是伟大的代码,但2个字符的检查可能会比一个更大的字符串搜索速度更快。虽然不是太多,所以我怀疑这是值得的。

(由基于注释的修复,改变== '1'== '0'

+0

显然我不能为你编辑单个字符,但'=='1''应该说'=='0'' –

+0

修正了它的答案。谢谢。 –

2

使用正则表达式,你可以删除第一节'00:使用”(这只是在删除小时部分一个HH:MM :: SS时间格式)

String.format("%02d:%02d", m, s).replaceAll("^00:",""); 

^是标记线

1

你的开头的字符实际上已经回答了你自己的问题。把你的想法变成代码吧。

你需要什么:

如果时间不到一个小时,只显示分钟和秒;否则,显示小时,分钟和秒钟。

您的代码应该读起来像口头版本:

if (hours < 1) { 
    text = String.format("%02d:%02d", minutes, seconds); 
} else { 
    text = String.format("%02d:%02d:%02d", hours, minutes, seconds); 
} 

简单,干净,快速,方便未来的程序员(包括你自己,从现在开始的一年)了解。

相关问题