web-dev-qa-db-ja.com

CultureInfoでローカライズされた日付文字列を生成する方法

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;
  }
25
Keith

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メソッド も確認する必要があります...

48
davidsleeps

ToString()メソッドの代わりにToShortDateString()のオーバーロードを使用します。 IFormatProviderを指定します。

これは、特定の日時文字列を形成するのに役立ちます。

http://www.csharp-examples.net/string-format-datetime/

これはローカリゼーションの問題に役立ちます:

ローカリゼーション/ CultureInfoをどのように処理しますか

6
GregC