# Getting 12:00 PM instead of 12:00 AM

**URL:** <https://www.ruby-forum.com/t/getting-12-00-pm-instead-of-12-00-am/88437>\
**Category:** Rails\
**Created:** [March 11, 2007, 1:31am UTC](https://www.ruby-forum.com/t/getting-12-00-pm-instead-of-12-00-am/88437 "2007-03-11T01:31:35Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![dorelal](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/3da27b/32.png) [@dorelal](https://www.ruby-forum.com/u/dorelal)\
**Post date:** [March 11, 2007, 1:31am UTC](https://www.ruby-forum.com/t/getting-12-00-pm-instead-of-12-00-am/88437/1 "2007-03-11T01:31:35Z")

</div>

> > 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.

---

<div class="post-metadata">

**Author:** ![dorelal](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/3da27b/32.png) [@dorelal](https://www.ruby-forum.com/u/dorelal)\
**Post date:** [March 11, 2007, 2:38am UTC](https://www.ruby-forum.com/t/getting-12-00-pm-instead-of-12-00-am/88437/2 "2007-03-11T02:38:42Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![dorelal](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/3da27b/32.png) [@dorelal](https://www.ruby-forum.com/u/dorelal)\
**Post date:** [March 11, 2007, 3:34am UTC](https://www.ruby-forum.com/t/getting-12-00-pm-instead-of-12-00-am/88437/3 "2007-03-11T03:34:47Z")

</div>

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”

---

<div class="post-metadata">

**Author:** ![dorelal](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/3da27b/32.png) [@dorelal](https://www.ruby-forum.com/u/dorelal)\
**Post date:** [March 11, 2007, 12:35pm UTC](https://www.ruby-forum.com/t/getting-12-00-pm-instead-of-12-00-am/88437/4 "2007-03-11T12:35:33Z")

</div>

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://  
[12-hour clock - Wikipedia](http://en.wikipedia.org/wiki/12-hour_clock) has more information.

–  
Jakob S. - [http://mentalized.net](http://mentalized.net)
