中文日期 - 在有效的DateTime中无法识别字符串

时间:2016-03-10 06:32:28

标签: c# .net

我遇到的问题是自从将应用程序代码库升级到.NET 4并在Windows 2012上运行后才出现 在Windows 2012或Windows 2008上,在.NET 2(3 / 3.5)中不会出现此问题 在Windows 2008上的.NET 4中不会出现此问题

在整个代码库中,重复与此类似的语句。

var sDate = DateTime.Now.ToString("dd-MMM-yyyy");
var dDate = DateTime.Parse(sDate);

令人惊讶的是,这并没有创造出您可能期望的许多问题,但是当代码编译为运行在Windows 2012上的.NET 4时,对于运行该应用程序的中国客户而言,这种情况不再适用在zh-CN文化下。 DateTime.Now.ToString("dd-MMM-yyyy");输出的值已发生变化,因此2016年3月3日输出以下内容。

.NET 2.0 / Windows 2008 - 10-三月-2016

.NET 4.0 / Windows 2012 - 10-3月-2016

解析10-3月-2016将导致格式异常。在.NET 4和Windows 2012中,解析10-三月-2016仍然有效。

是否有一个简单的解决方案来纠正DateTime.ToString()的输出以输出10-三月-2016而不是10-三月-2016谢谢?

2 个答案:

答案 0 :(得分:1)

  1. 更改区域和语言选项中的格式。
  2. 如果没有解决问题,请尝试:

    CultureInfo culture = new CultureInfo("zh-cn"); // China, simple chinese.
    culture.DateTimeFormat.AbbreviatedMonthNames = new string[]{"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月",""};
    

    重新定义了Simple Chinese AbbreviatedMonthNames。

答案 1 :(得分:0)

DateTime dateVAlue=new DateTime();

CultureInfo culture = CultureInfo.CurrentCulture;

DateTimeStyles styles = DateTimeStyles.None;

DateTime.TryParse(datetimestring,culture, styles, out dateValue);