2010-12-04 64 views
36

我要的是.. 如果文化为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")); 

字符串我们得值= 1/1/0001 12:00:00 AM

现在我如何提取“DD/MM/YYYY “和”24.00小时“出于此...在我的表格中的Dateformat列中...我想存储字符串,例如dd/mm/yyyy或mm/dd/yyyy NOT日期..在我的TimeFormat列中表中,要存储的值也是STRINGS,就像我需要存储“24:00hrs”或“12:00hrs”

我现在怎么做?

**使用ShorTimePattern返回这些值作为

h:mm tt and HH:mm 

如果我想在我的数据库存储值完全按照“24:00hrs”和“12:00hrs”,我怎么使用这些值。 .H:毫米TT和HH:毫米 哪一个是24小时制和12小时格式**

确定现在还有另外一个问题太...我想了解小数分隔符和千位分隔符的信息也基于CultureInfo ...这是什么财产?

回答

77

您可以从CultureInfoDateTimeFormat属性中检索格式字符串,该属性是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格式化日期/时间,在转换DateTime为字符串时把它作为你的IFormatter,使用ToString方法:

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

您能给链接到一些例子或什么?从来没有与IFormatter合作过..thnx – Serenity 2010-12-04 11:17:56

+0

@Serenity - 所有`CultureInfo`s实现`IFormatter`。回答更新了例子。 – Oded 2010-12-04 11:18:57

+0

Plz检查更新在我的问题... thnx – Serenity 2010-12-04 11:45:38

5

你可以看看它包含了特定的文化格式DateTimeFormat财产。上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)); 

更多信息:

2

使用的CultureInfo这样,从MSDN。 Here是所有不同文化的链接。

9

//尝试这可能有助于

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

尝试设置自定义CultureInfoCurrentCultureCurrentUICulture

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")); 
相关问题