如何使用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; } 

你可以使用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; } 

编辑
如果需要针对特定​​语言/文化解析字符串,您可能还需要查看重载的tryParse方法 …

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

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

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

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

你如何处理本地化/ CultureInfo