From: "naruse (Yui NARUSE) via ruby-core" Date: 2025-08-22T07:39:38+00:00 Subject: [ruby-core:123048] [Ruby Feature#21533] Introduce `Time#am?` and `Time#pm?` Issue #21533 has been updated by naruse (Yui NARUSE). matheusrich (Matheus Richard) wrote in #note-7: > It would be a bummer if the whole proposal was rejected over a minor edge-case of 12pm/12am. I propose two alternatives: > > 1. Returning `false` in `am?/pm?` both on noon and midnight, as there are no consensus what those mean. > 2. Adding supporting methods `noon?` and `midgnight?` to help users disambiguate and deal with these edge cases as they see fit. There is no consensus that it can return false for Time.utc(2000, 1, 1, 12, 0, 0).am? and pm?. If you want to check it is am, you can compare time.hour < 12 while you are satisfied with this definition. ---------------------------------------- Feature #21533: Introduce `Time#am?` and `Time#pm?` https://bugs.ruby-lang.org/issues/21533#change-114365 * Author: matheusrich (Matheus Richard) * Status: Rejected ---------------------------------------- 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/ ______________________________________________ ruby-core mailing list -- ruby-core@ml.ruby-lang.org To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/