重写.net中区域性的日期格式

重写.net中区域性的日期格式,.net,datetime,string-formatting,.net,Datetime,String Formatting,内置的.net日期格式有问题。我们使用的是缩写月份格式: string.Format("{0:MMM}", date); 对于我们的捷克网站,它输出罗马数字(例如“IV”,而在英语GB中是“Apr”)。我们想将其更改为一些自定义缩写 最好的方法是什么?我真的不想在视图中放入if语句。我应该使用DateTimeFormatInfo吗 另外,Microsoft如何决定格式,是否基于标准?您希望使用哪种文化?您可以在调用string.Format时指定它。例如: string text = stri

内置的.net日期格式有问题。我们使用的是缩写月份格式:

string.Format("{0:MMM}", date);
对于我们的捷克网站,它输出罗马数字(例如“IV”,而在英语GB中是“Apr”)。我们想将其更改为一些自定义缩写

最好的方法是什么?我真的不想在视图中放入if语句。我应该使用DateTimeFormatInfo吗


另外,Microsoft如何决定格式,是否基于标准?

您希望使用哪种文化?您可以在调用
string.Format
时指定它。例如:

string text = string.Format(CultureInfo.InvariantCulture, "{0:MMM}", date);
请注意,如果这就是您要格式化的全部内容,那么调用
ToString

string text = date.ToString("MMM", CultureInfo.InvariantCulture);

(这样你就不需要所有的复合格式了。)

这是一个多语言网站,我们根据浏览器设置(或cookie)设置线程区域性。所有其他语言输出所需的格式。我们需要更改的只是cs CZ区域性。@JontyMC:在这种情况下,当您设置线程区域性时,您可能只需要将特殊情况下的cs CZ完全使用不同的区域性,或者使用不同的
DateTimeFormatInfo
。是否真的没有办法更改默认值。我也有一个多语言网站,但客户端不喜欢某些语言的默认设置。@Richard:更改默认设置什么?文化对您可以在每个线程的基础上更改它。@Richard:系统是不可变的,但您可以使用CultureInfo.Clone创建可变副本。只需克隆您感兴趣的内容,当您为特定请求(或您正在执行的任何操作-上下文不清楚)设置默认区域性时,查看它是否是您需要的“自定义”版本。