2010-12-04 67 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")); 
相關問題