国籍の異なる人のメールアドレスのリストがあります(人ごとにISOコードがあります)
これらすべての人々に電子メールを送信するとき、メールのテキストで、日時フィールドを特定の文化でフォーマットされた文字列に変換する必要があります。
このために私はやっています
CultureInfo ci = new CultureInfo(ISO);
myStringDate = myDate.ToString(ci.DateTimeFormat.ShortDatePattern);
完璧に動作しますが、「2010年6月13日月曜日」のような日付を表示するために、代わりにLongDatePatternを短く使用すると、日と月の言語を除いて正常に動作します。
人の文化がそれなら-IT私は「月曜日」と「6月」ではなく「マルテディ」と「ギグノ」を表示する必要があります
現在のUIカルチャを変更せずにそれを行うにはどうすればよいですか?
これらのパターンは、Datetimeの出力結果の年、月、日、およびその他のパラメーターlocationsを記述します。ただし、月と日の名前は、パターンではなく、CultureInfoオブジェクトから取得されます。フォーマットとともにCultureInfoパラメーターの受け渡しをサポートする DateTime.ToStringoverload があります
CultureInfo culture = new CultureInfo(ISO);
DateTime.Now.ToString(culture.DateTimeFormat.LongDatePattern, culture);
このように、ToString()は、指定されたカルチャのパターンと名前の両方を尊重します
フォーマットパターンのみを指定したため、他の設定はデフォルトのフォーマットから取得されます。また、フォーマットプロバイダーを指定する必要があります。
myStringDate = myDate.ToString(ci.DateTimeFormat.LongDatePattern, ci);
または、長い日付パターンに標準のフォーマット文字列D
を使用します(指定したフォーマットプロバイダーから実際のパターンを取得するため)。
myStringDate = myDate.ToString("D", ci);
デモ:
CultureInfo ci = new CultureInfo("it-IT");
Console.WriteLine(DateTime.Now.ToString("D", ci));
ci = new CultureInfo("sv-SE");
Console.WriteLine(DateTime.Now.ToString("D", ci));
出力:
giovedì 26 gennaio 2012
den 26 januari 2012
DateTimeFormatInfo
クラスを使用します。
string code = "mk-MK";
DateTimeFormatInfo info =
DateTimeFormatInfo.GetInstance(CultureInfo.GetCultureInfo(code));
string longDate =
DateTime.Now.ToString(info.LongDatePattern, new System.Globalization.CultureInfo(code));
私はちょうど同様の問題を抱えていて、それを次のように解決しました:
DateTime.Now.ToString("dddd, dd MMMM yyyy", new System.Globalization.CultureInfo("it-IT"));
それはおかげでした このリンク。
DateTime.ToString()
にはさらに別のオーバーロードがあり、必要なパターンの両方を指定できます(現在はおよび使用するカルチャです。試してみてください:
myStringDate = myDate.ToString(ci.DateTimeFormat.LongDatePattern,
ci);