2011-02-09 31 views
7

我有一個時間跨度對象,需要只保存時間,沒有日期。我會用存儲沒有毫秒的當前時間組件

DateTime.Now.TimeOfDay 

但問題是它給時間格式

15:51:51.7368329 

我不想毫秒組件。我如何修剪它?

+1

你在哪裏存儲它? – Oded 2011-02-09 20:54:39

+4

這僅僅是向用戶展示,還是你真的需要將其轉換成另一個毫秒級組件的時間跨度? – Ani 2011-02-09 20:55:10

+0

是的,我猜它只是關於顯示,所以我只需要使用ToString()方法 – xbonez 2011-02-09 21:04:17

回答

10

您可以使用DateTime.Now.Hour/Minute/Second屬性,也可以使用DateTime.Now.ToString("HH:mm:ss")

這裏指的更多信息:http://msdn.microsoft.com/en-us/library/zdtaw1bw.aspx

+0

「h:mm:ss」不會給出所需的結果。 `h`表示非軍事小時的1位數表示,'mm`表示當前月份的2位數表示。因此,這將提供3:02:51提供的示例,而不是15:51:51,如要求。 – 2011-02-09 21:08:45

+0

我想你應該看看這個鏈接http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx – 2011-02-09 21:12:07

4

如果問題是顯示它,你可以這樣做:

DateTime.Now.ToString("HH:mm:ss") 
6

簡單地減去毫秒部分:

DateTime myTime = DateTime.Now.TimeOfDay; 
myTime = myTime.AddMilliseconds(-myTime.Millisecond); 

它可以在更短的代碼來完成,而無需首先分配給myTime

DateTime myTime = DateTime.Now.TimeOfDay.AddMilliseconds(
    -DateTime.Now.TimeOfDay.Millisecond); 

雖然幾分優雅,這是一個壞主意。當訪問TimeOfDay兩次時,有可能在第二次訪問之前某個時間點會再過一毫秒。在那種情況下,結果不會是零毫秒。

8

我相信這是你可能是什麼後:

TimeSpan timeNow = DateTime.Now.TimeOfDay; 
TimeSpan trimmedTimeNow = new TimeSpan(timeNow.Hours, timeNow.Minutes, timeNow.Seconds); 
1

您可以使用此功能檢查什麼格式適合你:

DateTime.Now.GetDateTimeFormats(); 

這會給你像所有的格式:

  • "14/05/2011"
  • "14/05/11"
  • "14.05.11"
  • "14-05-11"
  • "2011-05-14"
0

你可以做到這 -

DateTime.Parse(
       DateTime.Now.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss"), 
       System.Globalization.CultureInfo.CurrentCulture 
      ); 

爲我工作:)。