集中设置dateTime.ToString()格式

时间:2010-10-18 12:14:27

标签: c# asp.net datetime date

如何集中设置DateTime格式,以便在我的代码中使用DateTime.ToString()时,我可以随时获得ISO格式的字符串(例如:2008-2-19 01:00:00)或( 2008-2-19

6 个答案:

答案 0 :(得分:3)

使用CultureInfo

时,您应该使用DateTime.ToString()来控制格式

在Current Thread上设置CurrentCulture后,请尝试以下操作:

DateTimeFormatInfo format = Thread.CurrentThread.CurrentCulture.DateTimeFormat;
string dateTime = DateTime.Now.ToString(format.FullDateTimePattern);

答案 1 :(得分:2)

您可以将时间格式作为参数添加到tostring中,我总是将其用作参考

Dim d = DateTime.Parse("2008-2-19 01:00:00")
Assert.AreEqual("2008-2-19 01:00:00", d.ToString("yyyy-M-dd HH:mm:ss"))

http://www.geekzilla.co.uk/View00FF7904-B510-468C-A2C8-F859AA20581F.htm

此致

伊恩

答案 2 :(得分:2)

您应该更新System.Threading.Thread.CurrentThread.CurrentCulture属性。

这会影响当前线程中的所有DateTime.ToString()

答案 3 :(得分:2)

在Albin和Barry的答案的帮助下,我得到了以下代码,以便在Global.asax中集中设置时间格式。

using System.Globalization;
using System.Threading;

protected void Application_BeginRequest()
        {
            CultureInfo standardizedCulture = (CultureInfo)CultureInfo.CurrentCulture.Clone();
            standardizedCulture.DateTimeFormat.DateSeparator = "-";
            standardizedCulture.DateTimeFormat.LongDatePattern = "yyyy-MM-dd hh:mm:ss";
            standardizedCulture.DateTimeFormat.FullDateTimePattern = "yyyy-MM-dd hh:mm:ss";           
            standardizedCulture.DateTimeFormat.ShortDatePattern  = "yyyy-MM-dd"; 
            Thread.CurrentThread.CurrentCulture = standardizedCulture;
            Thread.CurrentThread.CurrentUICulture = standardizedCulture;
        } 

答案 4 :(得分:1)

您可以使用扩展方法来扩展日期时间并创建ToISOString()。

查看http://msdn.microsoft.com/en-us/library/bb383977.aspx有关实现目标的方法。在扩展方法中,您可以使用参数以您需要的方式格式化字符串,然后您可以使用DateTime.ToISOString(); Barry说,您也可以使用cultureinfo,但我不知道它是否符合您的需求。

答案 5 :(得分:0)

我认为请求的格式即DateTIme.Now.ToString()会对您的代码可读性(以及可维护性......)产生非常的不良影响。试图用自定义行为覆盖众所周知的行为是不好的做法 我认为使用它的好方法是这样的:DateTIme.Now.ToString(IsDefaultFormat) 现在您需要做的就是向DateTime添加一个扩展方法,它接收bool,如果该bool设置为true,则使用您的“默认格式”返回DateTime