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

如何使用VB.NET将数值时长转换为小时并计算累计总工时

实现思路

你现在的问题是把表示「小时.分钟」的特殊格式当成普通十进制小数相加,自然会得到1.3+1.3=2.6的错误结果,只要把输入值拆分为小时、分钟分别计算,再合并结果即可,具体逻辑如下:

  • 把每个输入值的整数部分提取为小时数
  • 把每个输入值的小数部分乘以100,提取为分钟数
  • 累加所有小时和分钟,再把总分钟数按60进制进位到小时
  • 最后格式化输出即可
修改后代码

你只需要替换Button1_Click的逻辑即可,其余代码可以保留:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    ' 处理第一个文本框输入
    Dim time1 As Double = Val(TextBox1.Text)
    Dim hour1 As Integer = Int(time1)
    Dim minute1 As Integer = CInt(Math.Round((time1 - hour1) * 100, 0))
    
    ' 处理第二个文本框输入
    Dim time2 As Double = Val(TextBox2.Text)
    Dim hour2 As Integer = Int(time2)
    Dim minute2 As Integer = CInt(Math.Round((time2 - hour2) * 100, 0))
    
    ' 计算总时长
    Dim totalHour As Integer = hour1 + hour2
    Dim totalMinute As Integer = minute1 + minute2
    ' 分钟进位
    totalHour += totalMinute \ 60
    totalMinute = totalMinute Mod 60
    
    ' 格式化输出
    If totalMinute = 0 Then
        Label1.Text = $"{totalHour}小时"
    Else
        Label1.Text = $"{totalHour}小时{totalMinute}分钟"
    End If
End Sub
额外优化建议

你可以增加输入校验逻辑,避免用户输入的小数部分超过59(比如1.70属于非法输入,不存在70分钟),判断如果分钟数>=60就弹出提示要求重新输入即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 16:48:05