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

时间:2010-12-04 11:13:50

标签: c# asp.net

我想要的是...... 如果文化是en-US那么

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

如果文化是en-GB那么

string dateFormat="dd/mmyyyy"; 
string timeFormat="24.00 hrs";
等等其他国家..

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

好的我试过了: -

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

string us gets value = 1/1/0001 12:00:00 AM

现在如何从我的表格中的Dateformat列中提取“dd / mm / yyyy”和“24.00小时”......我想存储STRINGS,例如dd / mm / yyyy或mm / dd / yyyy NOT dates ..在表格的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的有关十进制分隔符和千位分隔符的信息...那是什么属性?

6 个答案:

答案 0 :(得分:88)

您可以从CultureInfo DateTimeFormat属性检索格式字符串,该属性是DateTimeFormatInfo实例。这又包含ShortDatePatternShortTimePattern等属性,包含格式字符串:

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格式化日期/时间,请在将IFormatter转换为字符串时使用ToString将其作为DateTime传递方法:

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

答案 1 :(得分:14)

//尝试这可能有帮助

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"));

答案 2 :(得分:5)

您可以查看包含特定于区域性格式的DateTimeFormat属性。

答案 3 :(得分:3)

使用像这样的CultureInfo,来自MSDN:

// 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的更多信息。 Here是所有不同文化的链接。

答案 4 :(得分:0)

尝试为CultureInfoCurrentCulture设置自定义CurrentUICulture

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"));

答案 5 :(得分:0)

可以在网格视图中更改特定单元格的文化。

<%# DateTime.ParseExact(Eval("contractdate", "{0}"), "MM/dd/yyyy", System.Globalization.CultureInfo.InvariantCulture).ToString("dd/MM/yyyy", System.Globalization.CultureInfo.CurrentCulture) %>

有关更多详细信息,请检查链接。

Date Format Issue in Gridview binding with #eval()