当我设置CurrentCulture时,如何覆盖设置的日期格式?
示例:
System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-US");
假设我想覆盖默认日期格式,因此每当我输出DateTime值时,默认情况下它都是我想要的格式。
答案 0 :(得分:5)
首先,您需要创建一个不会只读的CultureInfo
实例。然后,您可以创建DateTimeFormatInfo
的实例,对其进行适当配置,最后将其分配给CultureInfo
对象:
var culture = CultureInfo.CreateSpecificCulture("en-US");
//or simply var culture = new CultureInfo("en-US");
var dateformat = new DateTimeFormatInfo();
//then for example:
dateformat.FullDateTimePattern = "dddd, mmmm dd, yyyy h:mm:ss tt";
culture.DateTimeFormat = dateformat;
System.Threading.Thread.CurrentThread.CurrentCulture = culture;
可以找到有关如何配置DateTimeFormatInfo的完整规范here。
答案 1 :(得分:0)
DateTime
没有格式。字符串有。听起来你只需要使用像DateTime.ToString()
这样的方法;
CultureInfo culture = CultureInfo("en-US");
DateTime.ToString("mm\/dd\/yyyy", culture);
Rememer The "/" Custom Format Specifier
具有特殊含义。如果你只想要/
个字符,你应该逃避它。看一下我的另一个 answer 。
答案 2 :(得分:0)
不,你不能,因为CultureInfo.GetCultureInfo
会返回cached, read-only version。
您可以做的就是像往常一样格式化DateTime,或创建自己的文化,继承您所需文化的行为。
答案 3 :(得分:0)
在ToString()
上查看DateTime
方法:
DateTime thisDate1 = new DateTime(2011, 6, 10);
Console.WriteLine("Today is " + thisDate1.ToString("MMMM dd, yyyy") + ".");
使用模式格式化日期的方法有很多种。这是一个参考:
http://msdn.microsoft.com/en-us/library/8kb3ddd4(v=vs.110).aspx