在C#中解析日期时间,输出错误

时间:2017-03-30 07:58:17

标签: c#

我正在尝试使用以下代码解析日期

DateTime mydate = DateTime.ParseExact(datetoconvert,"dd/mm/yyyy",System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat); 

但输出错误,上面代码中的datetoconvert为30/Mar/2017,但输出为29/Jan/2017

期待您的宝贵答案......

3 个答案:

答案 0 :(得分:13)

小写mm表示分钟,请使用MM

DateTime mydate = DateTime.ParseExact(datetoconvert,"dd/MM/yyyy",System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat); 

如果您想将其输出为30/Mar/2017(不同主题):

string result = mydate.ToString("dd/MMM/yyyy", CultureInfo.InvariantCulture);

但请注意/ has a special meaningParseToString)。它将被替换为您当前的文化日期分隔符,它似乎是/但却失败了。你可以通过指定CultureInfo.InvariantCulture或通过用撇号包装它来掩盖它来避免它:

DateTime mydate = DateTime.ParseExact(datetoconvert,"dd'/'MM'/'yyyy",System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat); 

答案 1 :(得分:7)

替换

"dd/mm/yyyy" 

"dd/MMM/yyyy" 

因为"Jan"MMM而不是mm匹配(分钟数)

参考

  

“MMM”月份的缩写名称。

https://msdn.microsoft.com/en-us/library/8kb3ddd4(v=vs.110).aspx

答案 2 :(得分:1)

日期格式错误。尝试“dd / MM / yyyy”而不是“dd / mm / yyyy”

如果您需要明确的月份名称,请使用“dd / MMM / yyyy”