如何获取System DateTime格式?

时间:2011-06-01 07:54:22

标签: c# .net datetime

我正在寻找获得系统日期时间格式的解决方案。

例如:如果我得到DateTime.Now?使用哪个日期时间格式? DD/MM/YYYY

3 个答案:

答案 0 :(得分:49)

如果在其他地方没有更改,则可以获得:

string sysFormat = CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern;

如果使用WinForms应用,您还可以查看UICulture

string sysUIFormat = CultureInfo.CurrentUICulture.DateTimeFormat.ShortDatePattern;

请注意,DateTimeFormat是一个读写属性,因此可以更改。

答案 1 :(得分:16)

上述答案并不完全正确。

我遇到的情况是我的主线程和我的UI线程被迫进入" en-US"文化(按设计)。 我的Windows DateTime格式为" dd / MM / yyyy"

string sysFormat = CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern;
string sysUIFormat = CultureInfo.CurrentUICulture.DateTimeFormat.ShortDatePattern;

返回" MM / dd / yyyy",但我想获得真正的Windows格式。 我能够做到的唯一方法是创建一个虚拟线程。

System.Threading.Thread threadForCulture = new System.Threading.Thread(delegate(){} );
string format = threadForCulture.CurrentCulture.DateTimeFormat.ShortDatePattern;

答案 2 :(得分:2)

System.DateTime.Now属性返回System.DateTime。它以二进制格式存储在内存中,大多数情况下大多数程序员都无需考虑。当您显示DateTime值或由于任何其他原因将其转换为字符串时,它将根据格式字符串进行转换,格式字符串可以指定您喜欢的任何格式。

在最后一个意义上,你的问题的答案是“如果我得到DateTime.Now,哪个日期时间格式使用?”是“它根本没有使用任何DateTime格式,因为你还没有格式化它”。

通过调用ToString的重载来指定格式,或者(如果使用System.String.Format)指定格式。还有一种默认格式,因此您不必总是指定格式。如果你问的是如何确定默认格式,那么你应该看看Oded的答案。