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

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

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

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

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

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

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

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

返回“22:00”

你是说你想要上午11点和晚上10点然后能够11:00和22:00,或者你想要如何显示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混淆了语法