2014-12-03 62 views
0

我正在用C#編寫一個簡單的類,它所做的只是將三個浮點變量輸出到DOS控制檯(小時,分鐘,秒)。輸出是這樣的:小時= 3,分鐘= 15,秒= 0.但我想知道我將如何去格式化它顯示3:15:00而不是小時= 3,分鐘= 15,秒= 0如何將用戶輸入格式化爲時間

這是我創建的打印出來的信息的方法:

/// <summary> 
/// Prints the time to the console 
/// </summary> 
public void PrintTime() 
{ 
    Console.WriteLine(pHour.ToString() + ":" + pMinutes.ToString() + ":" + Seconds.ToString()); 
} 

有人可以幫助我弄清楚如何格式化這個?我上網瞭解DateTime,但它也需要日期,因此我不需要在此作業中添加該日期。提前謝謝了!

+1

小時和分鐘不應該漂浮(也許不是秒,這取決於你想要什麼)。 – crashmstr 2014-12-03 17:57:29

回答

4

您可以使用字符串格式Console.WriteLine提供:

Console.WriteLine("{0}:{1:00}:{2:00}", pHour, pMinutes, Seconds); 
+2

應該至少使用'00'格式化器,分鐘和秒至少爲{0}:{1:00}:{2:00}' – juharr 2014-12-03 17:56:35

+0

@juharr:好建議,編輯。 – 2014-12-03 17:57:53

+0

@DanielPeñalba是的,但是...我怎麼安排它像03:15:00? – user3838697 2014-12-03 17:58:45

0

有一點斷章取義。還有一個方法是使用DateTime類輸出字符串

DateTime.Now.ToString("yyyy MM dd HH:mm:ss.fff tt", [System.Globalization.CultureInfo]::GetCultureInfo("en-US")); 

這種方法的優點是日期分隔容易插入。缺點是你不能在格式字符串中插入普通文本。

0

您可以使用DateTime對象來表示您的時間並忽略日期部分。或者你可以使用TimeSpan對象來完成類似的壯舉。

或者,只是忽略兩者完全並打印出你的輸入值是:

int hours = 5; 
    int minutes = 55; 
    int seconds = 7; 

    DateTime dt = new DateTime(2014, 1, 1, hours, minutes, seconds); 

    TimeSpan ts = new TimeSpan(hours, minutes, seconds); 

    Console.WriteLine("{0:00}:{1:00}:{2:00}", dt.Hour, dt.Minute, dt.Second); 
    Console.WriteLine("{0:00}:{1:00}:{2:00}", ts.Hours, ts.Minutes, ts.Seconds); // This is actually not needed for using a TimeSpan, see next line. 
    Console.WriteLine(ts); 
    Console.WriteLine("{0:00}:{1:00}:{2:00}", hours, minutes, seconds); 

在行動 https://dotnetfiddle.net/6lUwnR

需要注意的是,如果你在某些傳入超範圍值的奇怪的東西會發生案件,所以一定要驗證您的輸入! :)

相關問題