2011-09-14 110 views

回答

18

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

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

+1为“要求时间”,这也增加了时间类的解析方法(如果严格是不可取的)。 – steenslag

0

你是说你想上午11点和晚上10点,然后11点和22点的能力,或者你想如何显示11点和22点,而不是上午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混合语法为

+0

我在strftime()中看到了%H和%I标志。我没有试图格式化当前时间。我有一个'10pm'的字符串,我想将它转换为'22:00'。谢谢你快速的回复。 – paniwani

+0

Just do time_string + 12 = convertedTime so'time = 10 puts time + 12 = 22' –

3

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

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

返回 “22:00”

11

Time类没有解析方法,但日期时间了。

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

完美!我之前错误地做了DateTime.parse(“11pm”)。to_time.strftime(“%H:%M”)。谢谢! – paniwani

相关问题