当前位置:  开发笔记 > 编程语言 > 正文

如何在C#中验证日期时间?

如何解决《如何在C#中验证日期时间?》经验,为你挑选了3个好方法。



1> qui..:
DateTime.TryParse

我相信这更快,这意味着你不必使用丑陋的尝试/捕获:)

例如

DateTime temp;
if(DateTime.TryParse(startDateTextBox.Text, out temp))
{
  // Yay :)
}
else
{
  // Aww.. :(
}


如果我错了,请纠正我,但在C#(而不是JavaScript)中if/else分支是否需要花括号?不要误解我的意思,我不是要仔细检查,这是一个很棒的答案,而且我正在帮助我,因为它帮助了我,但只是想到,因为你在查看已发布的答案时从未知道未来的新用户是多少可能会混淆他们.当然,如果你在C#中使用花括号有问题,这个问题将是你最不担心的问题......
@VoidKing你对花括号是正确的,但如果你在该块中只有1个语句,则不必使用它们.这也适用于其他一些语言,但我可以看到这可能会误导新的编码员.
@ D.Galvez请原谅我迟到的派对,但即使只有一个陈述,包括括号是最佳做法吗?这可能只是个人偏好最重要的情况 - 在这种情况下,我发现*包括*它们只是为了可读性和一致性而非常好.
6年前,我几乎不知道会发生关于括号的这种辩论.

2> Jon Skeet..:

不要使用异常进行流量控制.使用DateTime.TryParse和DateTime.TryParseExact.我个人更喜欢具有特定格式的TryParseExact,但我猜有时TryParse更好.基于原始代码的示例使用:

DateTime value;
if (!DateTime.TryParse(startDateTextBox.Text, out value))
{
    startDateTextox.Text = DateTime.Today.ToShortDateString();
}

更喜欢这种方法的原因:

更清晰的代码(它说它想要做什么)

捕获和吞咽异常的性能更好

这不会不恰当地捕获异常 - 例如OutOfMemoryException,ThreadInterruptedException.(您当前的代码可以通过捕获相关的异常来修复以避免这种情况,但使用TryParse仍然会更好.)



3> 小智..:

这是解决方案的另一种变体,如果字符串可以转换为DateTime类型,则返回true,否则返回false.

public static bool IsDateTime(string txtDate)
{
    DateTime tempDate;
    return DateTime.TryParse(txtDate, out tempDate);
}


欢迎来到StackOverflow!请查看已经提供的答案,特别是在回答三年以上且已成功回答的问题时.您的答案已经被之前的受访者所涵盖.
推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有