On Mar 7, 2012, at 10:00 AM, Robert Klemme wrote:

> Mario Trento wrote in post #1050518:
>> Is there any time function to get military time:
>> eg.
>> 
>> tim="0457"
>> Time.striptime(time,....)       ==> 16:57

Out of curiosity, isn't '0457' the same as 4:57 AM? If that's the case, then why wouldn't the regular date parser do the job:

$ irb
001:0> require 'time'
=> true
002:0> Time.strptime '0457', '%H%M'
=> 2012-03-07 04:57:00 0100
003:0> Time.strptime '1657', '%H%M'
=> 2012-03-07 16:57:00 0100

My apologies if I missed something obvious there!


> You can create a Time from individual fields:
> 
> irb(main):004:0> Time.mktime 2012,3,10,10,11,12
> => 2012-03-10 10:11:12 +0100
> 
> You can use that to parse yourself and create the time object, e.g.
> 
> def mt(s)
>  raise "Not military #{s.inspect}" unless /\A(\d{2})(\d{2})\z/ =~ s
>  h = ($1.to_i + 12) % 24 # correct?
>  m = $2.to_i
>  now = Time.now
>  Time.mktime now.year, now.month, now.day, h, m
> end
> 
> irb(main):021:0> mt "0457"
> => 2012-03-07 16:57:00 +0100
> 
> Of course you can also change that to work with numbers if you prefer
> 
> def mt(n)
>  raise "Not military #{s.inspect}" unless Integer === n
>  h, m = n.divmod 100
>  h = (h + 12) % 24 # correct?
>  now = Time.now
>  Time.mktime now.year, now.month, now.day, h, m
> end
> 
> irb(main):029:0> mt 457
> => 2012-03-07 16:57:00 +0100
> 
> Please note that numbers with leading 0 are octal:
> 
> irb(main):030:0> 0457
> => 303
> 
>> I found this sample below, it it works opposite, could not find any info
>> how to get reverse so I'll get military format:
> 
>> def format_time(time)
>>  # normalize time
>>  time = time.to_s.rjust(4, '0') if time[0] !~ /[12]/
>>  time = time.to_s.ljust(4, '0') if time[0] =~ /[12]/
>> puts "New_time=" + time.to_s
>> 
>>  Time.strptime(time, '%H%M').strftime('%l:%M').strip
>> end
>> 
>> time = 1630
>> p format_time(time) # "4:30"
> 
> That just looks awful since it works with strings instead using Time
> properly.
> 
> Kind regards
> 
> robert
> 
> -- 
> Posted via http://www.ruby-forum.com/.
>