如何根据文化信息获取date和时间格式?

我想要的是..如果文化是美国那么

string dateFormat="MM/dd/yyyy"; string timeFormat="24.00 hrs"; 

如果文化是en-GB那么

 string dateFormat="dd/mmyyyy"; string timeFormat="24.00 hrs"; 

等等其他国家..

现在我如何获得这些date和时间格式值? 什么标准? 所有国家都使用类似的date/时间格式,哪些不是?

好吧,我试过这个:

  DateTime myDate = new DateTime(); string us = myDate.ToString(new CultureInfo("en-US")); 

string我们得到价值= 1/1/0001 12:00:00上午

现在我如何从表格中提取“dd / mm / yyyy”和“24.00 hrs”…在我的Dateformat列中…我想存储string,例如dd / mm / yyyy或mm / dd / yyyy NOTdate..在我的TimeFormat列表中,要存储的值也是STRINGS,就像我需要存储“24:00hrs”或“12:00hrs”

我现在怎么做?

**使用ShorTimePattern返回这些值

 h:mm tt and HH:mm 

如果我想将数据存储在我的数据库中,就像“24:00hrs”和“12:00hrs”一样,我该如何使用这些数值..h:mm tt和HH:mm哪一个是24小时格式, 12小时格式?**

好吧,现在还有另一个问题…我想要的基于CultureInfo的十进制分隔符和千分隔符的信息…这是什么财产?

您可以从CultureInfo DateTimeFormat属性(它是一个DateTimeFormatInfo实例)中检索格式string。 这反过来具有像ShortDatePatternShortTimePattern属性,包含格式string:

 CultureInfo us = new CultureInfo("en-US"); string shortUsDateFormatString = us.DateTimeFormat.ShortDatePattern; string shortUsTimeFormatString = us.DateTimeFormat.ShortTimePattern; CultureInfo uk = new CultureInfo("en-GB"); string shortUkDateFormatString = uk.DateTimeFormat.ShortDatePattern; string shortUkTimeFormatString = uk.DateTimeFormat.ShortTimePattern; 

如果您只想使用CultureInfo格式化date/时间,那么在使用ToString方法将DateTime转换为string时,将它作为IFormatter

 string us = myDate.ToString(new CultureInfo("en-US")); string uk = myDate.ToString(new CultureInfo("en-GB")); 

//试试这可能有帮助

 DateTime myDate = new DateTime(); string us = myDate.Now.Date.ToString("MM/dd/yyyy",new CultureInfo("en-US")); 

要么

  DateTime myDate = new DateTime(); string us = myDate.Now.Date.ToString("dd/MM/yyyy",new CultureInfo("en-GB")); 

您可以看看包含文化特定格式的DateTimeFormat属性。

从MSDN使用像这样的CultureInfo:

 // Creates a CultureInfo for German in Germany. CultureInfo ci = new CultureInfo("de-DE"); // Displays dt, formatted using the CultureInfo Console.WriteLine(dt.ToString(ci)); 

更多信息在MSDN上 。 这里是所有不同文化的链接。

尝试为CurrentCultureCurrentUICulture设置一个自定义CultureInfo

 Globalization.CultureInfo customCulture = new Globalization.CultureInfo("en-US", true); customCulture.DateTimeFormat.ShortDatePattern = "yyyy-MM-dd h:mm tt"; System.Threading.Thread.CurrentThread.CurrentCulture = customCulture; System.Threading.Thread.CurrentThread.CurrentUICulture = customCulture; DateTime newDate = System.Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd h:mm tt"));