7

我知道日期时间格式。“dd”代表从 01 到 31 的日期,“MM”代表从 01 到 12 的月份。我需要这种格式。但是如果我写“dd MM”(在我的例子中是 ToString() 方法),它总是会在月份的前一天出现。如何在不更改当前语言环境的顺序(第一天或第一个月)的情况下设置此格式(dd 和 MM)?因此,如果在当前的文化日首先出现,我想收到“20 08 2012”(分隔符在这里无关紧要),如果月份首先出现 - “08 20 2012”

4

2 回答 2

5

您可以使用MonthDayPattern当前语言环境中的 来获取两个项目的相对顺序,然后构造一个dd MMor MM dd

var mdp = CultureInfo.CurrentCulture.DateTimeFormat.MonthDayPattern;
string pattern = mdp.IndexOf('M') < mdp.IndexOf('d') ? "MM dd" : "dd MM";
于 2012-08-20T14:01:40.967 回答
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"
于 2012-08-20T14:01:13.690 回答