是否有一種方法可以設置或覆蓋整個應用程序的默認日期時間格式。我在C#.Net MVC 1.0中編寫了一個應用程序,並使用了很多泛型和反射。如果我可以重寫默認的DateTime.ToString()格式爲「dd-MMM-yyyy」,會更簡單。當網站在不同的計算機上運行時,我不希望更改此格式。設置默認日期時間格式c#
編輯 - 只是爲了澄清我的意思是專門調用ToString,而不是其他一些擴展函數,這是因爲反射/生成的代碼。更改ToString輸出會更容易。
是否有一種方法可以設置或覆蓋整個應用程序的默認日期時間格式。我在C#.Net MVC 1.0中編寫了一個應用程序,並使用了很多泛型和反射。如果我可以重寫默認的DateTime.ToString()格式爲「dd-MMM-yyyy」,會更簡單。當網站在不同的計算機上運行時,我不希望更改此格式。設置默認日期時間格式c#
編輯 - 只是爲了澄清我的意思是專門調用ToString,而不是其他一些擴展函數,這是因爲反射/生成的代碼。更改ToString輸出會更容易。
日期時間的 「缺省格式」 是:
ShortDatePattern + ' ' + LongTimePattern
至少在當前mono implementation。 這是在情況特別痛苦要顯示類似2001-02-03T04:05:06Z即在ISO 8606規定,但合併的日期和時間不是大問題,你的情況:
using System;
using System.Globalization;
using System.Threading;
namespace test {
public static class Program {
public static void Main() {
CultureInfo culture = (CultureInfo)CultureInfo.CurrentCulture.Clone();
culture.DateTimeFormat.ShortDatePattern = "dd-MMM-yyyy";
culture.DateTimeFormat.LongTimePattern = "";
Thread.CurrentThread.CurrentCulture = culture;
Console.WriteLine(DateTime.Now);
}
}
}
這將在日期時間設置ToString的默認行爲以返回您期望的格式。
你可以寫一個ExtensionMethod這樣的:
public static string ToMyString(this DateTime dateTime)
{
return dateTime.ToString("needed format");
}
這取決於你的應用程序的本地化設置。 Change that accordingly以獲得正確的格式。
否則有一個輔助類或擴展方法,它總是處理你的日期時間。
public static string ToMyDateTime(this DateTime dateTime) {
return dateTime.ToString("dd-MMMM-yy");
}
DateTime.ToString()組合由ShortDatePattern和DateTimeFormatInfo的LongTimePattern屬性返回的自定義格式字符串。您可以在DateTimeFormatInfo.CurrentInfo中指定這些模式。
我從來沒有試過這個我的自我。
如果你想確保你的文化保持不變,只需自己設置,以避免麻煩。
System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("nl-BE");
System.Threading.Thread.CurrentThread.CurrentCulture = ci;
System.Threading.Thread.CurrentThread.CurrentUICulture = ci;
以上示例將線程的文化設置爲比利時 - 荷蘭語。
CurrentCulture執行所有日期和時間處理,CurrentUICulture處理像資源一樣的UI本地化。
感謝您的回覆,這個代碼應該放在.Net MVC 1.0項目中,我已經在視圖中試過了,它可以工作,但不是在global.asax中 – 2009-09-07 13:15:43
「在視圖中」 ?你在global.asax中做了什麼? – 2009-09-07 13:28:51
如果我把 <%CultureInfo culture =(CultureInfo)CultureInfo.CurrentCulture.Clone(); culture.DateTimeFormat.ShortDatePattern =「dd-MMM-yyyy」; culture.DateTimeFormat。LongTimePattern =「」; Thread.CurrentThread.CurrentCulture = culture; %> 位於視圖的頂部,它正確地格式化頁面上的所有日期時間。但是,當我將該代碼放入global.asax的Application_Start中時,它不起作用。 我認爲這與IIS中的多線程請求有關。哪裏是最好的地方放這個代碼來影響我的整個網站。 – 2009-09-07 14:08:28