7

日時形式について知っています。「dd」は01から31までの日、「MM」は01から12までの月を表します。この形式が必要です。しかし、「dd MM」(私の場合はToString()メソッド)と書くと、常に月の前日になります。現在のロケールから順序(最初に来るもの-日または月)を変更せずに、この形式(ddおよびMM)を設定するにはどうすればよいですか?したがって、現在の文化の日が最初である場合は「20 08 2012」(ここでは区切り文字は関係ありません)を受け取り、月が最初である場合は「08202012」を受け取ります。

4

2 に答える 2

5

MonthDayPattern現在のロケールからを使用して2つのアイテムの相対的な順序を取得し、dd MMまたは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 に答える