我有一个字符串“13/6/2011”。我必须将其转换为DateTime。为此,我正在使用
DateTime.ParseExact("13/6/2011","DD/MM/YYYY",null);
但它显示
String was not recognized as a valid DateTime
异常。 知道为什么吗?
答案 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所提到的)你使用DD
和YYYY
代替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);