En-us形式の日付文字列を生成する次のコードがあります。 LCID(またはローカライズされた言語の同等の値)を渡して、ローカライズされた日付文字列を生成します。どうすればこれを達成できますか?
public static string ConvertDateTimeToDate(string dateTimeString) {
CultureInfo culture = CultureInfo.InvariantCulture;
DateTime dt = DateTime.MinValue;
if (DateTime.TryParse(dateTimeString, out dt))
{
return dt.ToShortDateString();
}
return dateTimeString;
}
toString 関数に2番目の引数を使用して、必要な言語/文化を使用できます...
MSDNによれば、ToShortDateString
の代わりに "d"形式を使用できます...
つまり、基本的にはオーストラリア英語として戻るには、次のようなものです。
CultureInfo enAU = new CultureInfo("en-AU");
dt.ToString("d", enAU);
メソッドを変更して、言語と文化をパラメータとして含めることができます
public static string ConvertDateTimeToDate(string dateTimeString, String langCulture) {
CultureInfo culture = new CultureInfo(langCulture);
DateTime dt = DateTime.MinValue;
if (DateTime.TryParse(dateTimeString, out dt))
{
return dt.ToString("d",culture);
}
return dateTimeString;
}
編集
特定の言語/文化に対して文字列を解析する必要がある場合は、 オーバーロードされたtryParseメソッド も確認する必要があります...
ToString()
メソッドの代わりにToShortDateString()
のオーバーロードを使用します。 IFormatProvider
を指定します。
これは、特定の日時文字列を形成するのに役立ちます。
http://www.csharp-examples.net/string-format-datetime/
これはローカリゼーションの問題に役立ちます: