在Ruby中将12小时时间转换为24小时格式

时间:2011-09-14 20:23:18

标签: ruby datetime date

如何将“11am”和“10pm”转换为“11:00”和“22:00”?是否有使用日期和时间类的简单方法?

4 个答案:

答案 0 :(得分:23)

我首先用Time#strptime解析字符串,然后用Time#strftime输出。这确保了对原始格式的严格检查。

require 'time'
Time.strptime("10pm", "%I%P").strftime("%H:%M")
=> "22:00"

答案 1 :(得分:11)

Time类没有parse方法,但DateTime有。

require 'date'
DateTime.parse("11pm").strftime("%H:%M") #=> "23:00"

答案 2 :(得分:3)

你的问题不清楚,但听起来你有一个字符串“10pm”,你需要(1)将其捕获为时间,(2)以24小时格式表示时间。我会这样做的。首先,gem install chronic然后编写一个这样的脚本:

require 'chronic'
t = Chronic.parse('10pm')
p t.strftime("%H:%M")

返回“22:00”

答案 3 :(得分:0)

你是说你想要上午11点和晚上10点,然后能够11点和22点,或者你想要如何显示11:00和22:00而不是11点和10点?

如果是第二个问题:

%H - Hour of the day, 24-hour clock (00 to 23).

#!/usr/bin/ruby -w
time = Time.new

puts time.to_s
puts time.ctime
puts time.localtime
puts time.strftime("%H:%M")

如果第一个问题告诉:

%I Hour of the day, 12-hour clock (01 to 12).

#!/usr/bin/ruby -w
time = Time.new
timeSwitch = 1

if (timeSwitch == 1)
    puts time.strftime("%H:%M")
else 
    puts time.strftime("%I:%M")
end

很抱歉,perl和ruby混淆了语法