カルチャ固有の形式は、先行ゼロが存在するかどうかを定義します。カルチャによって指定された日付形式を解析する必要があることを変更するには、先行ゼロ以外の指定子を探し、先行ゼロを含む形式を合成します。
例えば:
static string ShortDateFormat(string culture = null)
{
CultureInfo ci = CultureInfo.CurrentCulture;
if (!string.IsNullOrEmpty(culture))
ci = CultureInfo.GetCultureInfo(culture);
DateTimeFormatInfo fmtinfo = ci.DateTimeFormat;
if (string.IsNullOrEmpty(fmtinfo.DateSeparator))
return fmtinfo.ShortDatePattern;
string fmt = fmtinfo.ShortDatePattern.Replace(fmtinfo.DateSeparator, "!");
string[] parts = fmt.Split('!');
for (int i = 0; i < parts.Length; ++i)
{
if (parts[i] == "d")
parts[i] = "dd";
else if (parts[i] == "M")
parts[i] = "MM";
}
return string.Join(fmtinfo.DateSeparator, parts);
}
少しやり過ぎかもしれません...複数の文字である日付区切り記号を使用する文化があるかどうかはわかりません:)
その結果をパラメーターとして に渡してDateTime.ToString()
、出力を取得します。