2016-02-05 24 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而不需要明确指定一种文化。

相关问题