You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET中使用IsDate处理仅含时间的字符串问题

解决方案

要实现仅时间字符串返回空值的需求,你可以在原代码基础上增加仅时间格式校验的逻辑:先确认输入能被解析为DateTime,再判断原字符串是否仅符合时间格式,若是则将InvoiceDate设为空字符串,否则保留解析后的日期时间值。

修改后的代码示例

Dim InvoiceDate As String = Nothing
Dim parsedDate As DateTime

If IsDate(strInvoiceDate) Then
    parsedDate = CDate(strInvoiceDate)
    
    ' 定义需要匹配的常见时间格式(可根据实际场景调整)
    Dim timeFormats() As String = {
        "HH:mm", "HH:mm:ss", 
        "h:mm tt", "h:mm:ss tt", 
        "HHmm", "hmm tt"
    }
    
    ' 尝试用时间格式解析原字符串,判断是否仅为时间
    Dim isOnlyTime As Boolean = DateTime.TryParseExact(
        strInvoiceDate, 
        timeFormats, 
        System.Globalization.CultureInfo.CurrentCulture, 
        System.Globalization.DateTimeStyles.None, 
        parsedDate
    )
    
    If isOnlyTime Then
        InvoiceDate = ""
    Else
        ' 可根据需求指定日期时间输出格式,比如 "yyyy-MM-dd HH:mm:ss"
        InvoiceDate = parsedDate.ToString()
    End If
End If

逻辑说明

  1. 保留原有校验:先用你自定义的IsDate函数确认输入可被解析为DateTime类型。
  2. 仅时间校验:通过DateTime.TryParseExact匹配预定义的时间格式,若匹配成功则判定为仅时间字符串。
  3. 结果赋值:根据校验结果,仅时间时设InvoiceDate为空,否则赋值为解析后的日期时间字符串。

注意事项

  • 可根据业务场景的时间格式,调整timeFormats数组中的格式项(比如添加24小时制/12小时制的不同变体)。
  • 若需适配多区域语言,可将CultureInfo.CurrentCulture替换为指定的区域信息(如New CultureInfo("en-US"))。

内容的提问来源于stack exchange,提问作者Parangat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 08:57:06