2017-08-29 4 views
2

私はC#でデジタル時計を作りようとしています。私は時間、分、秒の3つのカウンターオブジェクトを持っています。フォーマットはhh:mm:ssでなければなりません。私は文字列をhh:mm:ssにフォーマットする方法

String hours = _hours.Value.ToString(); 
String minutes = _minutes.Value.ToString(); 
String seconds = _seconds.Value.ToString(); 

if (hours.Length == 1) 
{ 
    hours = "0" + hours; 
} 

if (minutes.Length == 1) 
{ 
    minutes = "0" + minutes; 
} 

if (seconds.Length == 1) 
{ 
    seconds = "0" + seconds; 
} 

return hours + ":" + minutes + ":" + seconds; 

それは動作しますが、私はString.Formatのを使用して、それを行うための、より効率的な方法のためにしようとしていますを行うには、管理何

。いくつかの異なる正規表現を試しましたが、失敗しました。

string b = string.Format("{0:D2}:{1:00}:{2:d2}", hours, minutes, seconds); 

乾杯IMO

+0

「_hours」、「_minutes」、および「_seconds」の種類は何ですか。 ? – Vikhram

+0

はオブジェクトクラスです。私はカウンターを作った。 –

+0

なぜ3つのカウンターオブジェクトがありますか?あなたはしないでください。 DateTimeは必要なものすべてを持っています。ちょうど現在のDateTimeと好きな間隔であなたのビューを更新してください... – Fildor

答えて

2

あなたはすでにそれはその直後、再びそれを文字列化するintまたはDateTimeにキャストするために役に立たないですstringタイプを持っている場合。

私はString.PadLeftメソッドを使用します:あなたの文字列を行います

string h = hours.PadLeft(2, '0'); 
string m = minutes.PadLeft(2, '0'); 
string s = seconds.PadLeft(2, '0'); 
string result = h + ":" + m + ":" + s; 

PadLeftを常に長さを持っている(この場合は2)最初のパラメータとして渡された値の少なくともとで「空」の場所を埋めます値は2番目のパラメータ(この場合は0)で渡されます。


Check this online

+0

これは動作します。ありがとう –

3

あなたstring.Formatを試みる前に、あなたはint型に文字列を変換しようとしたことがありますか?

string.Format("{0:00}:{1:00}:{2:00}", 
       int.Parse(hours), int.Parse(minutes), int.Parse(seconds)); 

以下のようなもの_hours.Value_minutes.Value_seconds.Valueが数値型である場合、あなたは、より効率的である以下のコード

string.Format("{0:00}:{1:00}:{2:00}", 
       _hours.Value, _minutes.Value, _seconds.Value); 
+0

これは動作します。ありがとう –

0

を使用することができますあなたが使用して試すことができます:

string b = DateTime.Now.ToString("HH:mm:ss"); 
1

あなたはいつも少し違うものを試すことができます:

DateTime dt = new DateTime(2000, 1, 1, hours, minutes, seconds); // just ignore year, month and day 
var x = dt.ToString("HH:mm:ss"); 
あなたは以下のような DateTimeToString()方法で利用できる書式設定オプションを使用することができます
1

:あなたには、いくつかの日付変数を持っている場合は、あなたがそうすることができ

(new DateTime(1900, 1, 1, _hours.Value, _minutes.Value, _seconds.Value)).ToString("HH:mm:ss"); 
0

string b = dateVar.ToString("HH:mm:ss"); 

あなたが解決したい場合たとえば、あなたの例を挙げると:

return string.Format("{0:00}:{1:00}:{2:00}", 
    int.Parse(hours), 
    int.Parse(minutes), 
    int.Parse(seconds) 
); 
関連する問題