是否有一种设置或覆盖整个应用程序的默认DateTime格式的方法。我正在用C#.Net MVC 1.0编写一个应用程序,并使用很多泛型和反射。如果我可以将默认的DateTime.ToString()格式覆盖为“dd-MMM-yyyy”,那会简单得多。当站点在不同的计算机上运行时,我不希望更改此格式。
编辑 - 只是为了澄清我的意思是专门调用ToString,而不是其他一些扩展函数,这是因为反射/生成代码。更改ToString输出会更容易。
答案 0 :(得分:48)
日期时间的“默认格式”为:
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的默认行为,以返回您期望的格式。
答案 1 :(得分:8)
这取决于您的应用程序的本地化设置。 Change that accordingly以获得正确的格式。
否则有一个辅助类或扩展方法,它总是处理你的DateTime。
public static string ToMyDateTime(this DateTime dateTime) {
return dateTime.ToString("dd-MMMM-yy");
}
答案 2 :(得分:1)
DateTime.ToString()结合了DateTimeFormatInfo的ShortDatePattern和LongTimePattern属性返回的自定义格式字符串。您可以在DateTimeFormatInfo.CurrentInfo中指定这些模式。
我从来没有尝试过这个我自己。
答案 3 :(得分:1)
如果您想确保您的文化保持不变,请自行设置以避免麻烦。
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本地化,如资源。
答案 4 :(得分:0)
您可以像这样编写ExtensionMethod:
public static string ToMyString(this DateTime dateTime)
{
return dateTime.ToString("needed format");
}
答案 5 :(得分:0)