我希望按文化提供的顺序显示日期,但是只显示我想要的元素。
DateTime.Tostring()方法有a list of patterns that are very useful但我希望它有一个非常小的变化。
以下代码中使用的CultureInfo被选为示例,我不想依赖于CultureInfo的特定列表,如果可能的话
var now = DateTime.Now;
string nowString = now.ToString("m", CultureInfo.GetCultureInfo("en-us"));
Console.WriteLine(nowString);
nowString = now.ToString("m", CultureInfo.GetCultureInfo("fr-FR"));
Console.WriteLine(nowString);
显示:
4月12日 12 avril
我想要一个显示月份和日期缩写的模式,但是它会保持指定CultureInfo的正确顺序。 使用模式“MMM dd ”将始终首先显示月份的缩写,然后是日期,例如打破法国订单。
没有太多的自定义代码可以实现这一目标吗?
答案 0 :(得分:1)
DateTime date1 = new DateTime(2008, 8, 29, 19, 27, 15);
Console.WriteLine(date1.ToString("ddd d MMM",
CultureInfo.CreateSpecificCulture("en-US")));
// Displays Fri 29 Aug
Console.WriteLine(date1.ToString("ddd d MMM",
CultureInfo.CreateSpecificCulture("fr-FR")));
// Displays ven. 29 août
所以不要认为框架为您的案例预览了一些内容。
您需要找到像这样的解决方法:
private string GetCultureMonthDay(CultureInfo culture, DateTime date)
{
return string.Format(culture, "{0:" +
culture.DateTimeFormat.MonthDayPattern.Replace("MMMM", "MMM") + "}", date);
}
用法:
?Console.WriteLine(GetCultureMonthDay(CultureInfo.GetCultureInfo("fr-FR"), now));
12 avr.
?Console.WriteLine(GetCultureMonthDay(CultureInfo.GetCultureInfo("en-US"), now));
Apr 12