设置默认日期时间格式c#

时间:2009-09-07 12:30:39

标签: c# asp.net-mvc datetime format

是否有一种设置或覆盖整个应用程序的默认DateTime格式的方法。我正在用C#.Net MVC 1.0编写一个应用程序,并使用很多泛型和反射。如果我可以将默认的DateTime.ToString()格式覆盖为“dd-MMM-yyyy”,那会简单得多。当站点在不同的计算机上运行时,我不希望更改此格式。

编辑 - 只是为了澄清我的意思是专门调用ToString,而不是其他一些扩展函数,这是因为反射/生成代码。更改ToString输出会更容易。

6 个答案:

答案 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)

我不确定这是否适用于网络应用,但您可以尝试为当前文化设置DateTimeFormat属性。

检查this,特别是this