2012-07-18 57 views
2

我正在尋找一種方法來正確顯示在C#和Delphi中大於24小時的本地化持續時間。我的意思是,DateTime類型通常提供了這樣的字符串函數,但時間跨度不是,爲什麼?什麼是24小時顯示時間跨度的標準方式?

而我甚至不知道什麼是非本地化時間跨度的正確格式。 例如持續2天10小時30分鐘。 我發現有些會顯示2.10:30:00或2:10:3​​0:00或2 10:30:00的時間跨度。

請幫忙,謝謝。

回答

2

對於不變的文化(非本地化):

myDateTime.ToString(CultureInfo.InvariantCulture) 

否則,只需使用myDateTime.ToShortDateString()或.ToLongDateString()..它會使用:在這種情況下

System.Threading.Thread.CurrentThread.CurrentUICulture ..

,或者如果你有具體的心事,你可以做

var myCulture = CultureInfo.GetCultureInfo("en-GB"); 
dt.ToString(myCulture); 

編輯 對於時間跨度:

例子:

DateTime dt1 = new DateTime(2012, 7, 17, 12, 30, 0); 
      DateTime dt2 = new DateTime(2012, 7, 18, 14, 40, 0); 

      TimeSpan ts = dt2 - dt1; 
      string s = ts.ToString("G", CultureInfo.InvariantCulture); 

更多的例子在這裏:http://msdn.microsoft.com/en-us/library/dd784379.aspx

EDIT 2:時間跨度格式字符串

更多信息: http://msdn.microsoft.com/en-us/library/ee372286.aspx

+0

哦,我對不起..我只是意識到你想爲TimeSpan ..不是DateTime ..給我一個莫;-) – Matt 2012-07-18 03:46:36

2

你可以請按照ISO 8601,PDF的規格可以找到here。見4.4.3 Duration

但是,使用本文檔中一字排開了會議看起來相當複雜,我,因爲根據該規範,您需要包括有關時的時間間隔發生背景:

的日曆年,日曆月,日曆星期或 日曆日取決於其在日曆中的位置。因此,只有在日曆年,日曆月,日曆周或所用日曆日期的持續時間已知時,才能評估標稱持續時間的確切持續時間。

如果在該時間段發生的實際時刻是不相關的申請,那麼也許這將是不夠好,忘記的年份和月份部分,只是堅持與格式nnDTnnHnnMnnS。使用標準TimeSpan方法不應太難。

更新: 閱讀遠一點,這個標準似乎並不適用於您的問題畢竟:

的持續時間是間隔 和循環時間間隔的表示作爲一個組成部分,代表持續時間因此是 沒有這個國際標準促進。

我只想離開這裏的答案,以避免任何人走進這個死衚衕像我一樣,或者,如果你認爲「排序按照一個標準的」足夠好...

相關問題