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

时间:2011-06-13 11:53:54

标签: c#

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

 DateTime.ParseExact("13/6/2011","DD/MM/YYYY",null);

但它显示

 String was not recognized as a valid DateTime

异常。 知道为什么吗?

5 个答案:

答案 0 :(得分: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);

如果必须有两位数的日期或月份,请使用:

DateTime date = DateTime.ParseExact(text, "d/M/yyyy",
                                    CultureInfo.InvariantCulture);

我不能立即清楚是否也应对(比如)13/06/2011。

答案 1 :(得分:5)

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

如果您输入06它应该可以使用,或者如果您使用当月的M格式说明符,则只需一位数。

另外(正如Jon Skeet所提到的)你使用DDYYYY代替dd(或d来应对单个数字天)和{{ 1}}。

有关各种日期时间格式说明符的完整列表,请参阅this MSDN page

答案 2 :(得分:1)

您可能希望使用其他格式字符串:

DateTime.ParseExact("13/6/2011","dd/MM/yyyy",null);

或者你可以使用d用于'短日期格式'as defined on MSDN

DateTime.ParseExact("13/6/2011","d",null);

答案 3 :(得分:1)

DateTime dt=  DateTime.ParseExact("13/06/2011","dd/MM/yyyy",null);

答案 4 :(得分:-2)

DateTime.ParseExact("13/6/2011","DD/M/YYYY",null);