DateTime.TryParse返回月份的意外值

时间:2014-11-30 23:15:23

标签: c#

下面的代码A和代码B分区的ParseExact方法是返回Month = 1而不是12.为什么?注意,没有例外。 THX。

        cult = CultureInfo.InvariantCulture;
        //Code A
        //This code sets dt2=01/01/2009, with month = 01 not 12!
        cult = CultureInfo.InvariantCulture;
        DateTime dt2 = DateTime.ParseExact("2009-12-1", "yyyy-m-d", cult);
        printIt(dt2);

        //Code B
        //This code sets dt3=01/01/2009, with month = 01 not 12!
        DateTime dt3 = DateTime.ParseExact("2009-12-1", "yyyy'-'mm'-'d", cult);
        printIt(dt3);

        //Code C
        //This code works and sets dt4=12/01/2009
        DateTime dt4 = DateTime.Parse("2009-12-1",  cult);
        printIt(dt4);

1 个答案:

答案 0 :(得分:3)

小写m是分钟,您必须使用MM代替

这例如有效:

DateTime dt2 = DateTime.ParseExact("2009-12-1", "yyyy-MM-d", cult);