VB6如何判断凌晨12点后的时间 现有计时代码运行不符合预期
VB6时间问候语逻辑异常修复
问题根因
- 代码中用于判断的
theTime变量未赋值,没有获取当前系统时间,判断逻辑无有效输入 - 时间区间边界值重叠,
#11:59:59 AM#、#6:00:00 PM#两个节点同时满足相邻两个判断的条件,会出现判断优先级错误 - 问候语匹配不符合日常时段规则,原代码中午12点到下午6点标注为Good Evening不符合常规使用习惯
修正后代码
Private Sub timer_Timer() dateoutput.Caption = Format(Now, "General date") ' 提取当前时间的时分秒部分赋值给theTime theTime = TimeValue(Now) If theTime < #12:00:00 PM# Then ' 0点到12点显示早上好 welcome.Caption = "Good Morning" ElseIf theTime < #6:00:00 PM# Then ' 12点到18点显示下午好,如需保留原Evening可自行修改 welcome.Caption = "Good Afternoon" Else ' 18点到24点显示晚上好 welcome.Caption = "Good Night" End If End Sub
优化说明
使用TimeValue提取纯时间部分,避免日期值干扰时间判断;采用只判断上限的半开区间逻辑,天然规避边界值重叠问题,代码更简洁不易出错。
内容的提问来源于stack exchange,提问作者Nevyllo Kalangi
相关产品推荐
相关产品推荐

