如何根据文化信息获取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。 这反过来具有像ShortDatePattern
和ShortTimePattern
属性,包含格式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上 。 这里是所有不同文化的链接。
尝试为CurrentCulture
和CurrentUICulture
设置一个自定义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"));