t1 = Time.now
=> Sat Mar 10 19:27:33 -0500 2007
t2 = t1.change(:hour => 12, :min => 0, :sec => 0)
=> Sat Mar 10 12:00:00 -0500 2007
t2.strftime("%H:%M %p")
=> “12:00 PM”
Since I am setting hour to 12, I was expecting it to be 12:00 AM. Also
t2 is Sat Mar 10 12:00:00.
I think 12:00:00 should translate to 12:AM and not to 12:00 PM.
I am using ruby 1.8.5 and rails 1.2.2
Any thoughts.
Neeraj K. wrote:
I think 12:00:00 should translate to 12:AM and not to 12:00 PM.
I am using ruby 1.8.5 and rails 1.2.2
Any thoughts.
Even though technically it’s incorrect (noon is “12 M” – it’s neither
anti or post meridian, it is the meridian), by convention midnight is 12
AM and noon is 12 PM, and that rule is codified in the ANSI C strftime
function.
–
Michael W.
The :hour param means the hour out of 24, not 12. 12 == noon, and 0
== midnight. Also %H will give you time on this same scale. You
should use %I:
Time.now.change(:hour => 0, :min => 0, :sec => 0).strftime("%I:%M %p")
=> “12:00 AM”
On Mar 11, 2007, at 01:30 , Neeraj K. wrote:
Since I am setting hour to 12, I was expecting it to be 12:00 AM. Also
t2 is Sat Mar 10 12:00:00.
I think 12:00:00 should translate to 12:AM and not to 12:00 PM.
You’re fighting an uphill battle then, trying to change how the 12
hour clock is designed: Noon == “12 pm”. Midnight == “12 am”. http://
en.wikipedia.org/wiki/12-hour_clock has more information.
–
Jakob S. - http://mentalized.net