我知道日期时间格式。“dd”代表从 01 到 31 的日期,“MM”代表从 01 到 12 的月份。我需要这种格式。但是如果我写“dd MM”(在我的例子中是 ToString() 方法),它总是会在月份的前一天出现。如何在不更改当前语言环境的顺序(第一天或第一个月)的情况下设置此格式(dd 和 MM)?因此,如果在当前的文化日首先出现,我想收到“20 08 2012”(分隔符在这里无关紧要),如果月份首先出现 - “08 20 2012”
问问题
701 次
2 回答
5
您可以使用MonthDayPattern
当前语言环境中的 来获取两个项目的相对顺序,然后构造一个dd MM
or 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 回答