C#DateTime解析问题

时间:2009-12-16 16:32:45

标签: c# datetime parsing datetimepicker

我目前的代码如下:

        DateTime dateBegin = DateTime.ParseExact(begin, "MM/dd/yyyy", null);
        DateTime dateEnd = DateTime.ParseExact(end, "MM/dd/yyyy", null);

但只要“end”中的日期不同,它就会抛出异常。我从DateTimePicker控件获取日期,因此日期可能看起来像“1/12/2010”,然后它将抛出异常。我该如何避免这种情况?

感谢。

5 个答案:

答案 0 :(得分:12)

这是winforms吗?只需在选择器上使用.Value即可获得正确的DateTime - 无需解析。

最终,“1/12/2010”不是“MM / dd / yyyy”;你还可以试试“M / d / yyyy”作为后备吗?

string s = "1/12/2010";
string[] formats = { "MM/dd/yyyy", "M/d/yyyy", "M/dd/yyyy", "MM/d/yyyy" };
DateTime value = DateTime.ParseExact(s, formats, CultureInfo.CurrentCulture, DateTimeStyles.None);

答案 1 :(得分:4)

为什么不使用DateTimePicker.Value?

答案 2 :(得分:4)

如果从DateTimePicker获取值,为什么不使用已经是DateTime的那个控件的值?我不确定你为什么试图解析字符串......

答案 3 :(得分:0)

如果您提供了堆栈/异常信息,则可能更容易提供帮助,但我希望它会因为ParseExact失败而抛出,可能是因为它不适合您尝试缩小它的格式

答案 4 :(得分:0)

怎么样?

string begin = @"1/12/2010";
DateTime dateBegin = DateTime.ParseExact(begin, "M/dd/yyyy", null);

一个很好的参考是

http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx