これは非常に古いスレッドですが、私が解決する必要のあるユースケースに完全に一致していたので、これに出会いました。最終的に機能するコードを作成したので、それを必要とする人のために含めようと思いました。(現在の日付をデフォルトにする、カルチャの完全な日付文字列を許可する、または曜日を削除したものを許可するなど、いくつかの追加のトリックがあります):
public string DateString(DateTime? pDt = null, string lang, bool includeDayOfWeek = true)
{
if (pDt == null) pDt = DateTime.Now;
DateTime dt = (DateTime)pDt;
System.Globalization.CultureInfo culture = null;
try { culture = new System.Globalization.CultureInfo(lang); }
catch{ culture = System.Globalization.CultureInfo.InvariantCulture; }
string ss = dt.ToString("D", culture);
if (!includeDayOfWeek)
{
// Find day-of-week string, and remove it from the date string
// (including any trailing spaces or punctuation)
string dow = dt.ToString("dddd", culture);
int len = dow.Length;
int pos = ss.IndexOf(dow);
if (pos >= 0)
{
while ( ((len + pos) < ss.Length) && ( !Char.IsLetterOrDigit(ss[len+pos])))
len++;
ss = ss.Substring(0, pos) + ss.Substring(len+pos, ss.Length - (len+pos));
}
}
return ss;
}