我知道日期时间格式。 “dd”代表01至31日,“MM” - 从01到12的月份。我需要这种格式。但是,如果我写“dd MM”(在我的情况下在ToString()方法中)它将始终在月前一天。如何在不更改当前区域设置的顺序(第一天或第一天)的情况下设置此格式(dd和MM)?因此,如果在当前的文化日首先我想要收到“20 08 2012”(这里的分隔符并不重要),如果月份第一 - “08 20 2012”
答案 0 :(得分:5)
您可以使用当前区域设置中的MonthDayPattern
来获取这两个项的相对顺序,然后构建dd MM
或MM dd
:
var mdp = CultureInfo.CurrentCulture.DateTimeFormat.MonthDayPattern;
string pattern = mdp.IndexOf('M') < mdp.IndexOf('d') ? "MM dd" : "dd MM";
答案 1 :(得分:3)
看看文化的MonthDayPattern。也许你可以根据自己的需要进行定制,例如
string FormatWithMonthDayPattern(DateTime dateTime, CultureInfo cultureInfo)
{
var pattern = cultureInfo.DateTimeFormat.MonthDayPattern;
return dateTime.ToString(Regex.Replace(pattern, "M+", "MM"));
}
var result1 = FormatWithMonthDayPattern(DateTime.Now, new CultureInfo("en-US"));
// result1 == "08 20"
var result2 = FormatWithMonthDayPattern(DateTime.Now, new CultureInfo("fr-FR"));
// result2 == "20 08"