2016-02-05 51 views
0

我有DateTimes的列表,我想以某種格式獲取DateTime以顯示小時分鐘秒。例如,我有2015年12月22日4:32 PM來自en-US的文化,如果我使用bg-BG,那麼返回16:32 22Декември(即平均12月)2015.好的是返回2015年12月4日32:12。如何返回DateTime而不更改格式

這是我的簡單代碼。

List<DateTime> xAxises = SetListOfDateTimes(); 
var culture = Thread.CurrentThread.CurrentCulture; 

for (int i = 1; i <= xAxises.Count; i++) 
{ 
    string someTime = xAxises.ElementAt(i - 1).ToString("hh:mm:ss tt", Thread.CurrentThread.CurrentCulture = culture); 
    string anotherTime = xAxises.ElementAt(i - 1).ToString("ddd, dd MMMM hh:mm:ss tt", Thread.CurrentThread.CurrentCulture = culture); 
    string thirdTime = xAxises.ElementAt(i - 1).ToString("dd MMMM yyyy", Thread.CurrentThread.CurrentCulture = culture); 
    string fourthTime = xAxises.ElementAt(i - 1).ToString("MMMM yyyy", Thread.CurrentThread.CurrentCulture = culture); 
} 

我真的問題是,我有幾個DateTime是否與BG-BG格式和someTime是返回的en-US格式。當DateTime是21:22:30 someTime告訴我9:22:30。我想成爲21:22:30。因爲如果是en-US的文化所以能把我的申請用在美國的話,所以把tt

任何人都知道如何正確返回當前文化的DateTime。

+0

您能更好地解釋您所看到的內容嗎?文化只有在你調用'.ToString(...)'時纔會發揮作用,DateTime本身並沒有文化本身。你看過[NodaTime](http://nodatime.org/)嗎? –

+0

這個問題沒有多大意義。日期時間值*沒有任何格式或文化*。它們是二進制值,而不是字符串。另一方面合成或解析**所使用的文化是當前的文化。請發佈代碼,顯示您嘗試過的內容,您的期望以及獲得的內容。你發佈的內容基本上與*不相同*不傳遞任何文化 –

+0

順便說一句,沒有文化默認使用24小時。我懷疑這個問題不是關於文化,而是自定義格式 –

回答

2

那麼,如果你說你想要12小時格式,你明白了。嘗試HH而不是hh(請參閱msdn)。

ToLongTimeString()。還有一些更多的,longshort版本的time和`日期,至少。

順便說一句,DateTime.Now.ToLongDateString()給我Freitag, 5. Februar 2016而不需要明確指定一種文化。

相關問題