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

VB.NET计算停车时长报错,寻求代码调试解决方案

VB.NET停车时长计算错误修正

你的代码核心问题是拿格式化后的字符串做减法运算,字符串不支持算术操作,这是报错的根本原因。正确的做法是用解析成功的DateTime对象计算时间差,以下是修正后的代码和说明:

问题点拆解

  • 你把解析后的DateTime转成了字符串display/display2,然后试图用这两个字符串相减,这在VB.NET里是不允许的
  • 没有处理时间解析失败的情况,直接计算会引发额外错误

修正后的代码

' 入场时间处理
Dim entered As String = txtHourEnter.Text + ":" + txtMinEnter.Text
Dim entryTime As DateTime
Dim displayEntry As String = "Invalid entry"
Dim isEntryValid As Boolean = DateTime.TryParse(entered, entryTime)
If isEntryValid Then
    displayEntry = entryTime.ToString("h:mm tt")
End If
lblTimeIn.Text = displayEntry

' 离场时间处理
Dim exited As String = txtHourExit.Text + ":" + txtMinExit.Text
Dim exitTime As DateTime
Dim displayExit As String = "invalid entry"
Dim isExitValid As Boolean = DateTime.TryParse(exited, exitTime)
If isExitValid Then
    displayExit = exitTime.ToString("h:mm tt")
End If
lblTimeOut.Text = displayExit

' 计算停车时长
Dim parkingTimeDisplay As String = "请输入有效时间"
If isEntryValid AndAlso isExitValid Then
    ' 用DateTime对象计算时间差,得到TimeSpan
    Dim parkingDuration As TimeSpan = exitTime - entryTime
    ' 格式化显示时长,比如小时:分钟,D2确保分钟为两位格式
    parkingTimeDisplay = $"{parkingDuration.Hours}:{parkingDuration.Minutes:D2}"
End If
lblParkingTime.Text = parkingTimeDisplay

关键修正说明

  1. 保留解析成功的标记(isEntryValid/isExitValid),只有当两个时间都有效时才计算时长
  2. 用exitTime - entryTime得到TimeSpan对象,这是VB.NET专门用于存储时间间隔的类型
  3. 格式化TimeSpan为可读字符串,避免直接输出原始的TimeSpan格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 11:10:37