【问题标题】:C#- Validation for date year less than 1753C#- 验证日期年份小于 1753
【发布时间】:2018-04-05 21:20:46
【问题描述】:

SQL 接受最小日期年份值 1753。

我有下面的代码,我希望验证年份,但它没有。

args.IsValid = DateTime.TryParseExact(args.Value.Trim(), "MM/dd/yyyy", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out test);

我该如何解决这个问题?我需要检查格式是否为 mm/dd/yyyy 以及有效的月、日或年

【问题讨论】:

  • 错了。 Date 的最小值是0001-01-01。 DateTime2 的最小值是0001-01-01 00:00:00。 1753 限制仅适用于过时的DateTime 数据类型。这不是它过时的唯一原因。我在我的手机上,所以我无法链接它,但谷歌“再也不要使用日期时间”,你会明白为什么。
  • args.Value.Trim()的值是多少?

标签: c# sql datetime


【解决方案1】:

您当前检查的只是该值是否可以解析。如果您想检查有关值的某些内容,则必须在正常情况下进行。幸运的是,您可以使用&& (condition) 轻松做到这一点。比如:

args.IsValid = DateTime.TryParseExact(args.Value.Trim(), "MM/dd/yyyy",
    CultureInfo.InvariantCulture, DateTimeStyles.None, out test) &&
    test.Year >= 1753;

(当然,如果您确实需要检查年份是否至少为 1753 年。Zohar Peled 的评论可能对您更有用,在建议更好的字段类型或纠正对您的类型的误解方面使用。)

【讨论】:

  • (很抱歉最初出现错误的情况。现在已修复!)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-24
  • 1970-01-01
  • 1970-01-01
  • 2015-09-15
  • 1970-01-01
  • 2019-12-05
相关资源
最近更新 更多