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

Java使用Asia/Kolkata时区的时段问候程序输出错误如何解决

问题排查结果

问题出在条件判断的边界值遗漏:12:49 PM对应getHour()返回的24小时制数值为12,你的所有分支判断都没有覆盖12这个值,最终匹配到else分支输出了Good night:

  • 上午分支h_today > 0 && h_today < 12:仅覆盖1到11点,不包含12点
  • 下午分支h_today > 12 && h_today < 17:仅覆盖13到16点,不包含12点
  • 晚间分支h_today >17 && h_today < 23:仅覆盖18到22点,不包含17、23点
    除此之外0点也没有被第一个分支覆盖,会错误匹配到else分支。

修正后代码

LocalDateTime today = LocalDateTime.now(ZoneId.of("Asia/Kolkata"));
int h_today = today.getHour();
if(h_today >= 0 && h_today < 12) { 
    System.out.println("Good morning ma'am! \n"); 
} else if(h_today >= 12 && h_today < 17) { 
    System.out.println("Good afternoon ma'am! \n"); 
} else if(h_today >=17 && h_today < 23 ) {
    System.out.println("Good evening ma'am! \n"); 
} else {
    System.out.println("Good night ma'am! \n"); 
}

补充说明

你选择使用LocalDateTime完全不会影响当前的小时判断逻辑,LocalDateTime.getHour()和LocalTime.getHour()返回的24小时制小时数值完全一致,不需要调整这个选型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 03:39:02