【问题标题】:C# DateTime Parsing ProblemC# DateTime 解析问题
【发布时间】:2009-12-16 16:32:45
【问题描述】:

我当前的代码如下所示:

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

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

谢谢。

【问题讨论】:

  • 这是在 ASP.NET / WinForms / WPF 中吗?

标签: c# datetime parsing datetimepicker


【解决方案1】:

这是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);

【讨论】:

    【解决方案2】:

    为什么不使用 DateTimePicker.Value?

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        如果您提供了堆栈/异常信息,ti 可能更容易提供帮助,但我预计它会抛出,因为 ParseExact 失败可能是因为它不符合您试图缩小范围的格式

        【讨论】:

          【解决方案5】:

          这个怎么样?

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

          一个很好的参考是

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

          【讨论】:

          • 并且,为了避免当天出现同样的问题,请使用“M/d/yyyy”,甚至使用“M/d/y”
          猜你喜欢
          • 1970-01-01
          • 2023-03-21
          • 2022-11-30
          • 2012-10-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-12-19
          • 2018-12-26
          相关资源
          最近更新 更多