我在C#中使用DateTime來顯示時間。構建時間時,每個人都使用哪個日期部分?C#日期時間:什麼「日期」使用時,我只使用「時間」?
例如以下是無效的:
//4:37:58 PM
DateTime time = new DateTime(0, 0, 0, 16, 47, 58);
因爲沒有零個月或零天。
我是否使用COM的零日期?
//4:37:58 PM
DateTime time = new DateTime(1899, 12, 30, 16, 47, 58);
或者SQL Server的?
//4:37:58 PM
DateTime time = new DateTime(1900, 1, 1, 16, 47, 58);
我意識到這是任意的,因爲我會忽略代碼中的日期部分,但它仍然是很好的能夠使用:
DateTime duration = time2 - time1;
回答
我想我喜歡MinValue
DateTime time = DateTime.MinValue.Date.Add(new TimeSpan(16, 47, 58));
注意:我不能使用TimeSpan,因爲這不會存儲一天的時間。我知道的原因是因爲沒有辦法顯示它的內容。
這是說TimeSpan
記錄了時間跨度,不是時間天的。例如
TimeSpan t = new TimeSpan(16, 47, 58);
t.ToString();
返回的時間跨度在格式小時:分鐘:秒,例如:
16:47:58
而非時間:
4:47:58 PM (United States)
04:47:58 nm (South Africa)
4:47:58.MD (Albania)
16:47:58 (Algeria)
04:47:58 م (Bahrain)
PM 4:47:58 (Singapore)
下午 04:47:58 (Taiwan)
04:47:58 PM (Belize)
4:47:58 p.m. (New Zealand)
4:47:58 μμ (Greece)
16.47.58 (Italy)
오후 4:47:58 (Korea)
04:47:58 ب.ظ (Iran)
ਸ਼ਾਮ 04:47:58 (India)
04:47:58 p.m. (Argentina)
etc
在其它話說,時間跨度和時間是有區別的。同時也意識到TimeSpan沒有提供將時間跨度轉換爲一天中某個時間的機制 - 這是有原因的。
您說TimeSpan不存儲一天的時間,但DateTime結構有一個名爲TimeOfDay的屬性,類型是TimeSpan。 – 2010-04-29 15:25:23
請考慮編輯出問題的答案。 – 2016-10-25 16:37:50