如何集中设置DateTime
格式,以便在我的代码中使用DateTime.ToString()
时,我可以随时获得ISO格式的字符串(例如:2008-2-19 01:00:00
)或( 2008-2-19
)
答案 0 :(得分:3)
在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