有没有办法全局设置DateTime.ToString()格式?

时间:2016-01-23 09:23:00

标签: c# .net

我想知道有没有办法全局设置DateTime.ToString()格式?

让我们说我希望我的应用程序上的所有DateTime对象都被格式化为" yyyy-MM-dd。"我可以通过从对象的每个实例调用.ToString(" yyyy-MM-dd")来完成它。但我认为这似乎并不干净优雅。

我可以创建一个继承DateTime类并覆盖.ToString方法的新类,但我意识到DateTime是一个我无法继承和修改的密封类。这个问题有解决方法吗?

任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:7)

创建扩展方法。

public static string ToSortableString(this DateTime datetime)
{
    return datetime.ToString("yyyy-MM-dd");
}

答案 1 :(得分:5)

    protected void Application_BeginRequest(Object sender, EventArgs e)
    {    
      CultureInfo newCulture = (CultureInfo)System.Threading.Thread.CurrentThread.CurrentCulture.Clone();
      newCulture.DateTimeFormat.ShortDatePattern = "yyyy-MM-dd";
      newCulture.DateTimeFormat.DateSeparator = "-";
      Thread.CurrentThread.CurrentCulture = newCulture;
    }

更改Global.asax文件中的当前线程文化,并将其全局化

或者

将web.config中的Globalization设置为:

<system.web>
<globalization  culture="en-NZ"  uiCulture="en-NZ"/>
</system.web>

List Of All Country Codes

答案 2 :(得分:1)

噢,是的,我得到你的问题,这是解决这个问题的最佳方法。 创建一个类,例如

public class DateFormatter
{
    public DateFormatter()
       {
       }
 public string FormatDate(DateTime date)
 {
      return date.ToString("yyyy-mm-dd");
 }
}

然后在App.xaml.cs中创建此类的静态实例,如下所示

public static DateFormatter formatter = new DateFormatter();

在您的代码中,您将以此格式调用此类

textBox1.DataContext = App.formatter.FormatDate({your-datetime-variable});