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

如何在CMD中传递时间动态值?Ruby时间格式化需求

实现从终端输入时间并转为24小时格式输出

你原来的代码里a = Time.now是直接获取当前时间,完全没用到用户输入的内容,所以才只会输出当前时间。要实现动态输入的功能,我们需要读取终端输入的时间字符串,解析成时间对象,再转成24小时格式输出,下面是具体的解决方案:

基础实现版本

假设你习惯输入12小时制带AM/PM的格式(比如03:45 PM),可以用这段代码:

# 提示用户输入时间格式
puts "Enter the time (format: HH:MM AM/PM, e.g., 03:45 PM or 10:15 AM):"
# 获取用户输入并去除首尾空格和换行符
input_time = gets.chomp
# 按照指定的12小时制格式解析输入字符串
parsed_time = Time.strptime(input_time, "%I:%M %P")
# 输出24小时制格式(%H是00-23的小时,%M是00-59的分钟)
puts "24-hour format: #{parsed_time.strftime('%H:%M')}"

如果你更习惯直接输入24小时制的时间(比如15:45),可以简化解析逻辑:

puts "Enter the time (format: HH:MM, e.g., 15:45 or 09:30):"
input_time = gets.chomp
parsed_time = Time.strptime(input_time, "%H:%M")
puts "24-hour format: #{parsed_time.strftime('%H:%M')}"

带错误处理的优化版本

考虑到可能输入错误格式的情况,我们可以添加异常捕获,让程序提示用户重新输入:

loop do
  puts "Enter the time (format: HH:MM AM/PM, e.g., 03:45 PM):"
  input_time = gets.chomp
  begin
    parsed_time = Time.strptime(input_time, "%I:%M %P")
    puts "Success! 24-hour format: #{parsed_time.strftime('%H:%M')}"
    break # 输入正确就退出循环
  rescue ArgumentError
    puts "Invalid time format. Please try again with the correct format."
  end
end

关键逻辑说明

  • gets.chomp:读取终端输入的字符串,并自动去掉末尾的换行符和首尾空格
  • Time.strptime:这是实现动态功能的核心——它能根据你指定的格式,把用户输入的字符串解析成时间对象(和Time.now固定取当前时间完全不同)
  • strftime('%H:%M'):用%H输出24小时制的小时(00-23),%M输出分钟,组合成标准的24小时时间格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:31:32