c#中的字符串到日期转换

fac*_*ook 2 c#

我有一个字符串"13/6/2011".我必须将其转换为DateTime.为此,我正在使用

 DateTime.ParseExact("13/6/2011","DD/MM/YYYY",null);
Run Code Online (Sandbox Code Playgroud)

但它表明

 String was not recognized as a valid DateTime
Run Code Online (Sandbox Code Playgroud)

例外.知道为什么吗?

Jon*_*eet 8

除了ChrisF提到的"6"与"06"问题之外,您的格式字符串不正确.日期为"dd",年份为"yyyy",因此您的格式应为"dd/MM/yyyy".

另外,我建议明确传入CultureInfo.InvariantCulture,否则"/" 实际上可以被视为不同的(特定于文化的)日期分隔符.(另一种选择是引用斜线,但我认为使用不变的文化将事物更多地引入.)

换句话说,我会使用这样的东西:

// Sample for text: 13/06/2011
DateTime date = DateTime.ParseExact(text, "dd/MM/yyyy",
                                    CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)

如果你没有一定两位数天或一个月,使用方法:

DateTime date = DateTime.ParseExact(text, "d/M/yyyy",
                                    CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)

我现在不清楚是否应对(比如)13/06/2011.


Chr*_*isF 5

您的月份格式是,MM但您只指定了该月的单个数字.

如果你输入06它应该工作,或者如果你使用M月份的格式说明符,这将需要一个数字.

另外(正如Jon Skeet所提到的)你已经使用过DDYYYY不是dd(或者d应对单位数天)和yyyy.

有关各种日期时间格式说明符的完整列表,请参阅此MSDN页面.