设置文化时,我可以覆盖日期格式,例如毫米/日/年?

时间:2014-02-14 22:45:02

标签: c# asp.net-mvc datetime

当我设置CurrentCulture时,如何覆盖设置的日期格式?

示例:

System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-US");

假设我想覆盖默认日期格式,因此每当我输出DateTime值时,默认情况下它都是我想要的格式。

4 个答案:

答案 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