【问题标题】:date not formatting correctly on a date that does not exist日期格式不正确的日期不存在
【发布时间】:2012-10-14 15:07:01
【问题描述】:

我有以下代码将日期(来自数据库条目)转换为正确的格式:

Dim blah As Date = "02/29/2001"
MsgBox(Format(blah, "yyyy-MM-dd"))

但是,它一直告诉我:

从字符串“02/29/2001”到类型“日期”的转换无效。

现在我看到 2001 年 2 月 29 日没有第 29 天,那一年只有 28 天。那么,当数据库表中的日期输入不正确时,我将如何检查它不会引发错误?

【问题讨论】:

    标签: vb.net validation date format


    【解决方案1】:

    你可以使用IsDate()

    如果您的字符串或日期可以转换为日期,则此函数返回 true。

    喜欢这个

    Dim dateAndTime As String
    dateAndTime = "March 15, 1981 10:22 AM"
    noDate = "Hello"
    dateCheck = IsDate(dateAndTime)
    dateCheck = IsDate(noDate)
    

    第一个返回 true,第二个返回 false

    此外,此功能适用于 29、30 或 31 天的月份,就像您的情况一样

    here'smsdn 链接

    【讨论】:

      【解决方案2】:

      你可以改用TryParseExact,比如:

      Dim enUS As New CultureInfo("en-US") 
      Dim dateString As String 
      Dim blah As Date 
      
      ' Parse date with no style flags.
      dateString = "02/29/2001"
      If Date.TryParseExact(dateString, "MM/dd/yyyy", enUS, DateTimeStyles.None, dateValue) Then
         MsgBox(Format(blah, "yyyy-MM-dd"))
      
      Else
         MsgBox(String.Format("'{0}' is not in an acceptable format.", dateString))
      End If 
      

      【讨论】:

        猜你喜欢
        • 2020-05-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多