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.
>>=20
>> tim=3D"0457"
>> Time.striptime(time,....)       =3D=3D> 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'
=3D> true
002:0> Time.strptime '0457', '%H%M'
=3D> 2012-03-07 04:57:00 0100
003:0> Time.strptime '1657', '%H%M'
=3D> 2012-03-07 16:57:00 0100

My apologies if I missed something obvious there!


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