2016-11-28 1 views
0

私は自分のアプリケーション用のタイマーをクリーンアップしようとしていますが、私が望むことをするのが難しいです。タイマーから不要な00を取り除く時間をフォーマットする

誰でもH:M:Sをフォーマットして00を削除する方法を知っていますか?午前12時34分56秒:

例の時間は次のように起動することがあります(hh:mm:ss)

しかし、時間が達すると私は、 を残りの00年代を削除し、午後12時34分56秒を言うことができますパフォーマンスについて心配しているのは、私がここで時間をフォーマットするより効率的な方法を見つけるためにここにいる理由です。

String.format("%02d:%02d", m, s).replaceAll("00:","");は賢明な選択でしょうか?

ありがとうございました。

+2

先頭の「00」を取り除く努力は、そのままAPIを使用するよりも無駄かもしれないと思います。言うまでもなく、時間データの表示には一貫性がなく、小さい値は6ではなく4(2桁)の数字だけです。 –

+3

'replaceAll(" 00: "、" ")'は良い選択ではありません。 '11: 00:21 => 11:21'は間違った時間になります。 –

+1

の場合は、日付を01:00:00と比較し、結果、 'hh:mm:ss'または' mm:ss'でフォーマットすることができます。 –

答えて

2

私はあなただけ最初の2つの文字をチェックして無視できるほど速くなる可能性が想定しています

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

私は必ずしもそれは偉大なコードだとは思いませんが、2つの文字のチェックは、おそらく長い文字列の検索よりも高速になります。しかし、それほど価値があるとは思えません。

正規表現を使用して

+0

私はあなたのために1文字を編集できないようですが、 '== '1'は' == '0' 'と答えるべきです –

+0

答えで修正されました。ありがとう。 –

2

を(== '0'== '1'を変更し、コメントに基づく修正を作った)、あなたはのみ最初のセクション'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); 
} 

、シンプルで清潔な、速い、と理解して(自分自身、今から一年を含む)、将来のプログラマのための簡単。

関連する問題