我正在研究我在互联网上发现的问题:
人体在夜间经历90分钟的睡眠周期,如果您在睡眠周期结束时醒来,感觉比在睡眠周期中醒来时更加清爽。面临的挑战是制定一个唤醒时间并输出可能时间的程序,以便您在睡眠周期结束时醒来。*
我解决这个问题的方法是在将其解析为DateTime
并将其存储到数组中之后,将时间减去90米。但是,我是Rails的新手,我不太清楚如何做到这一点。如何以原始格式显示时间?
这是我到目前为止所做的:
require 'date'
def sleep_time time
a = []
5.times do |i|
multiple = i * 90 * 60
a << time - multiple
end
puts a
end
puts "Enter wake-up time: "
time = DateTime.strptime(gets, '%I:%M %p').to_time
puts time
sleep_time(time)
编辑:我想出了如何减去90米(使用秒)。
答案 0 :(得分:1)
时间支持strftime
,它采用与strptime
一致的格式字符串。使用:
time.strftime('%I:%M %p')
例如:
Time.now.strftime('%I:%M %p')
=> "01:29 PM"
此外,不要将其解析为DateTime对象,然后使用to_time
转换为Time对象。而是直接解析为Time对象。时间也支持strptime
:
require 'time'
Time.strptime('01:29 PM', '%I:%M %p')
=> 2012-09-20 13:29:00 -0700
如果要从给定格式解析,然后再次以该格式输出,请定义常量并在strptime
和strftime
方法中使用它:
TIME_FORMAT = '%I:%M %p'
Time.strptime('01:29 PM', TIME_FORMAT)
time.strftime(TIME_FORMAT)