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

如何在Ruby方法的if语句中使用Time函数实现按时间段返回问候语

代码问题定位与修正方案

原代码存在的问题

  • 获取时间的方式错误:t = Time 仅将Time类赋值给变量,并未获取当前时间的实例,需要调用Time.now拿到当前的时间对象。
  • 判断操作符使用错误:代码中使用单等号=做条件判断,单等号是赋值操作,并非比较/包含判断,会导致条件逻辑完全失效。
  • 时间数值未做对应转换:直接定义的0900..1200是整数区间,没有和当前时间的时分数值做关联,无法匹配到实际时间。
  • 区间边界覆盖不符合需求:原代码第二个区间设置为12011600,遗漏了12:00整的时间点,和需求中12:0016:00返回下午问候的要求不符。

正确实现代码

def hello
  current_time = Time.now
  # 将当前时间转换为「小时*100 + 分钟」的整数格式,方便区间判断
  time_num = current_time.hour * 100 + current_time.min
  if time_num >= 900 && time_num < 1200
    'Good morning!'
  elsif time_num >= 1200 && time_num <= 1600
    'Good afternoon!'
  else
    'Hello!'
  end
end

如果需求约定12:00整属于上午问候范围,只需将第一个判断条件的time_num < 1200改为time_num <= 1200,第二个判断条件的time_num >= 1200改为time_num >= 1201即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 08:54:04