如何使用CultureInfo生成本地化的日期字符串

时间:2011-04-27 03:08:33

标签: c# .net datetime 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;
  }

2 个答案:

答案 0 :(得分:47)

您可以使用toString函数的第二个参数,并使用您需要的任何语言/文化......

根据MSDN ...

,您可以使用“d”格式代替ToShortDateString

所以基本上像澳大利亚英语这样回归:

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

修改
如果您需要针对特定​​语言/文化解析字符串,您可能还需要查看overloaded tryParse method ...

答案 1 :(得分:6)

使用ToString()的重载而不是ToShortDateString()方法。提供IFormatProvider。

这有助于形成特定的日期时间字符串:

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

这应该有助于解决本地化问题:

How do you handle localization / CultureInfo