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

VB.NET中AM/PM判断If语句异常:输入2显示PM输入1显示AM

解决VB.NET中AM/PM判断的问题

你的代码出现问题的核心原因是直接对字符串做大小比较,而非将输入的小时转换为数字后再进行数值对比。比如字符串"2"和"12"比较时,会按字符逐个判定:第一个字符'2'的ASCII值大于'1',所以"2"会被判定为大于"12",从而触发PM的分支。

修正后的代码

先把输入的小时文本转换为整数,再做数值层面的判断,同时加入输入有效性验证:

Dim hour As Integer
' 验证小时和分钟输入是否为有效数字
If Integer.TryParse(txtHourEnter.Text, hour) AndAlso Integer.TryParse(txtMinEnter.Text, Nothing) Then
    If hour < 12 Then
        lblTimeIn.Text = $"{txtHourEnter.Text}:{txtMinEnter.Text}AM"
    Else
        lblTimeIn.Text = $"{txtHourEnter.Text}:{txtMinEnter.Text}PM"
    End If
Else
    ' 处理非数字等无效输入
    lblTimeIn.Text = "请输入有效的时间格式"
End If

扩展优化(24小时制转12小时制)

如果需要支持24小时制输入自动转换为12小时制带AM/PM的格式,可以调整逻辑:

Dim hour24 As Integer
If Integer.TryParse(txtHourEnter.Text, hour24) Then
    Dim period As String = If(hour24 < 12, "AM", "PM")
    ' 把0/24转为12,其他小时取模12
    Dim hour12 As Integer = If(hour24 Mod 12 = 0, 12, hour24 Mod 12)
    lblTimeIn.Text = $"{hour12}:{txtMinEnter.Text}{period}"
End If

内容的提问来源于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:38