我正在研究一個可能在世界上許多國家/地區可以看到的應用程序。沒有多少國家可以顯示小時,分鐘和秒鐘以外的其他內容:作爲分隔符,但有幾個國家,我想確保時間格式正確的地區。 DateTime在這方面很出色,但TimeSpan不是。這些片段來自Visual Studio 2010中使用.Net 4的立即窗口,其中我的區域設置爲Malayalam(印度)。 dateTime.Now調用還反映了我的時鐘,Microsoft Outlook和其他區域的時間顯示情況。格式化不同文化中的TimeSpan
DateTime.Now.ToString()
"02-10-12 17.00.58"
http://msdn.microsoft.com/en-us/library/dd784379.aspx說「如果formatProvider爲空,將使用與當前區域性關聯的DateTimeFormatInfo對象。如果格式是一個自定義格式字符串,則formatProvider參數被忽略。」當然,我不應該需要傳遞Current CultureInfo。我在這裏想要的格式是hh.mm.ss,但是在大多數其他語言中顯而易見的是:mm:ss,並且如果還有其他的可能性,它也應該自動反映這些格式 - 基本上TimeSpan 應該是文化意識,只是因爲DateTime是。
但是:
timeRemaining.ToString()
"00:02:09"
timeRemaining.ToString("c")
"00:02:09"
timeRemaining.ToString("c", CultureInfo.CurrentCulture)
"00:02:09"
timeRemaining.ToString("g")
"0:02:09"
timeRemaining.ToString("G")
"0:00:02:09.0000000"
timeRemaining.ToString("t")
"00:02:09"
timeRemaining.ToString("g", CultureInfo.CurrentCulture)
"0:02:09"
timeRemaining.ToString("g", CultureInfo.CurrentUICulture)
"0:02:09"
timeRemaining.ToString("G", CultureInfo.CurrentUICulture)
"0:00:02:09.0000000"
timeRemaining.ToString("G", CultureInfo.CurrentCulture)
"0:00:02:09.0000000"
timeRemaining.ToString("t", CultureInfo.CurrentCulture)
"00:02:09"
我在尋找一個簡單的,單一線路輸出文化的感知方式的時間跨度。任何想法都表示讚賞。
但是,如果要使用格式字符串,則更簡單的解決方法是'ts.ToString(「h'。'mm'。'ss」)'。從.NET 4.0開始工作。這硬編碼的時期。如果你想使用文化的時間分隔符,可以從'CultureInfo.CurrentCulture.DateTimeFormat.TimeSeparator'中讀取它,把它放在撇號中,並與格式字符串中的'h','mm'和'ss'一起使用'TimeSpan'。 –
很難看出這是「更簡單」。這樣的代碼忽略時間格式會覆蓋控制面板中指定的用戶,這肯定是不準確的。 –