C# 日期时间解析问题

发布于 2024-08-15 05:58:41 字数 306 浏览 6 评论 0原文

我当前的代码如下所示:

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

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

谢谢。

My current code looks like this:

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

But it throws an exception whenever the date in "end" is different. I get the dates from a DateTimePicker control, thus the date may look like "1/12/2010" and then it'll throw the exception. How do I avoid this?

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

万人眼中万个我 2024-08-22 05:58:41

这是winform吗?只需使用 .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);

Is this winforms? just use .Value on the picker and you'll get the right DateTime - no need to parse.

Ultimately, "1/12/2010" isn't "MM/dd/yyyy"; you could also try ""M/d/yyyy" as a fallback?

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);
幻想少年梦 2024-08-22 05:58:41

为什么不使用 DateTimePicker.Value?

Why don't you use DateTimePicker.Value?

星星的軌跡 2024-08-22 05:58:41

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

If you are getting the value from a DateTimePicker, why not use tha Value of that control which is already a DateTime? I'm not sure why you're trying to parse the string...

烟凡古楼 2024-08-22 05:58:41

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

If you provided the stack/exception information ti may be easier to help but I would expect it is throwing as the ParseExact is failing probably because it doesn't fit the format you are trying to narrow it too

天冷不及心凉 2024-08-22 05:58:41

这个怎么样?

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

一个很好的参考是

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

how about this ?

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

A good reference is

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文