
Issue #21533 has been updated by duerst (Martin Dürst). Using 12pm for noon is indeed bad practice. Using 12am for midnight is even worse practice, because without context it's unclear whether it's at the beginning or the end of a certain date. But it is practice, at least in certain parts of the world. See e.g. the Caltrain schedule at https://www.caltrain.com/media/34716. There's e.g. a northbound train that leaves South San Francisco (S. San Francisco) at 12:00pm on the first page. On page 2, there's also a train that leaves Menlo Park at 12:00am. In both cases, the context make it clear what is meant. I don't think introducing the two methods is a good idea. Formatting times should be done with an appropriately internationalized library. In other cases, what is in the morning or the afternoon may vary widely. The usage example given by the OP is spurious; the possibility to do something "Later today" may end at 11:00 or at 13:00 or at some other time somewhere around noon. ---------------------------------------- Feature #21533: Introduce `Time#am?` and `Time#pm?` https://bugs.ruby-lang.org/issues/21533#change-114246 * Author: matheusrich (Matheus Richard) * Status: Open ---------------------------------------- This proposal adds two predicate methods to `Time`: ```ruby Time.utc(2000, 1, 1, 11, 59, 59).am? # => true Time.utc(2000, 1, 1, 12, 0, 0).pm? # => true ``` * `am?` returns true when the hour is less than 12. * `pm?` returns true when the hour is 12 or greater. These methods provide a clear and expressive way to branch logic based on time of day. For example: ```ruby def reminder_deferral_options options = [] options << ["Later today", "later_today"] if Time.now.am? options << ["Tomorrow morning", "tomorrow_morning"] options << ["Pick a date/time…", "custom"] options end ``` This is a common pattern in applications involving reminders and scheduling. The method names are intuitive, and the semantics are well understood. The implementation is in [this Pull Request](https://github.com/ruby/ruby/pull/14133). -- https://bugs.ruby-lang.org/