【问题标题】:how to validate dates in asp.net如何在 asp.net 中验证日期
【发布时间】:2009-04-26 19:59:58
【问题描述】:

从“曾经”开始,我就一直遇到这个日期问题

我住在一个我们使用英国日期格式的国家,例如dd/mm/yyyy 但是每次我尝试对托管在美国服务器中的 sql 数据库进行查询时,100% 的时间我都会遇到错误。

Convert.ToDateTime("2007-17-5") 会产生错误,而 Convert.ToDateTime("2007-5-17") 也会产生错误。

许多验证方法、许多 t-sql 查询和许多其他方法,我在大多数项目中都尝试并部分解决了,但是,我想知道是否有人有通用方法将字符串转换为日期不会造成任何问题?

或任何有关处理日期的好资源?

-----------编辑... -----------------

即使我正确地格式化日期,即使我确定有,对 sql 服务器的查询也不会产生任何值。例如,如果我正在搜索属于 1/ 之间日期的记录从 1/2009(即 2009 年 1 月 1 日)到 1/5/2009(即 2009 年 5 月 1 日)不返回任何记录。当我尝试在 sql server 的查询生成器中更改日期时,它给了我一个错误,说它不是我输入的有效日期...

【问题讨论】:

  • “2007-5-17”不是有效的国际日期,“2007-05-17”是。如果您要使用国际格式“YYYY-MM-DD”,则需要包含前导 0。
  • 谢谢 jrcs3,前导零是我所缺少的……我终于很高兴地发现,有一种国际化的日期处理方式,因为它让我头痛到现在...
  • 酷,我添加了评论作为答案。

标签: asp.net datetime date


【解决方案1】:

使用DateTime.TryParseExact 并给出一些格式,代表您的日期字符串

【讨论】:

    【解决方案2】:

    2007-5-17 不是有效的国际日期 (ISO 8601),2007-05-17 是。如果您要使用国际格式 CCYY-MM-DD,您需要包含前导 0s

    http://www.w3.org/QA/Tips/iso-date

    http://www.saqqara.demon.co.uk/datefmt.htm

    【讨论】:

      【解决方案3】:

      您在 UI 中处理了很多日期验证。

      首先,在您的 webconfig 中,您需要设置您的文化:

      <globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="en-GB" uiCulture="en-GB" />
      

      您可以通过将 Type 属性设置为“Date”来使用客户端上的 CompareValidator 控件。

      <CompareValidator ID="id" runat="server"
        ControlToValidate="controltovalidateid"
        ErrorMessage="Invalid Date"
        Type="Date" />
      

      为了限制用户选项,我在 ASP.NET 中使用了日历控件。该控件的一个好处是您可以在属性中设置日期格式:

      <ajaxToolkit:Calendar runat="server"
        TargetControlID="Date1"
        CssClass="ClassName"
        Format="dd/mm/yyyy"
        PopupButtonID="Image1" />
      

      其他信息

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-03-11
        • 2011-12-09
        • 1970-01-01
        • 2010-10-10
        • 2018-05-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多