如何使用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
相关产品推荐
相关产品推荐

