带格式字符串的DateTime.ParseExact返回奇怪的值

时间:2015-05-26 15:50:36

标签: c#

我尝试使用以下代码解析提供指定格式的日期:

    var date = "30/06/2014";
    var ret2 = DateTime.ParseExact(date, "dd/mm/yyyy", null);
    var ret3 = DateTime.ParseExact(date, "dd/mm/yyyy", CultureInfo.CurrentCulture);
    var ret4 = DateTime.ParseExact(date, "dd/mm/yyyy", CultureInfo.InvariantCulture);
    Console.WriteLine(ret2);
    Console.WriteLine(ret3);
    Console.WriteLine(ret4);

-----OUTPUT-----
30/01/2014 00:06:00
30/01/2014 00:06:00
30/01/2014 00:06:00

有人可以解释一下为什么这段代码没有返回我期待的30/06/2014 00:00:00值吗?

4 个答案:

答案 0 :(得分:6)

mm是分钟的占位符。你应该使用MM几个月

答案 1 :(得分:2)

mm表示分钟,而不是数月。请尝试使用MM

答案 2 :(得分:1)

如上所述,mm表示会议记录 - 请注意每个日期时间的分钟数为06:00而不是默认00:00,而1是一个月的默认值(因为没有0个月)。

有关详细信息,请参阅StandardCustom日期时间格式字符串上的MSDN,以及更有用的占位符。

答案 3 :(得分:0)

代码使用了错误的格式字符串

var ret2 = DateTime.ParseExact(date, "dd/mm/yyyy", null);
var ret3 = DateTime.ParseExact(date, "dd/mm/yyyy", CultureInfo.CurrentCulture);
var ret4 = DateTime.ParseExact(date, "dd/mm/yyyy", CultureInfo.InvariantCulture);

mm是占位符分钟。 要获得月份,请使用格式字符串

中的MM
var ret2 = DateTime.ParseExact(date, "dd/MM/yyyy", null);
var ret3 = DateTime.ParseExact(date, "dd/MM/yyyy", CultureInfo.CurrentCulture);
var ret4 = DateTime.ParseExact(date, "dd/MM/yyyy", CultureInfo.InvariantCulture);

查看MSDN https://msdn.microsoft.com/en-us/library/w2sa9yss(v=vs.110).aspx

上的示例