From: "matheusrich (Matheus Richard) via ruby-core" Date: 2025-08-21T13:30:39+00:00 Subject: [ruby-core:123029] [Ruby Feature#21533] Introduce `Time#am?` and `Time#pm?` Issue #21533 has been updated by matheusrich (Matheus Richard). > 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. I'm sorry, I don't follow. The possibility to do something "Later today" will last until 11:59, which is the last `am?` time. 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. ---------------------------------------- Feature #21533: Introduce `Time#am?` and `Time#pm?` https://bugs.ruby-lang.org/issues/21533#change-114339 * 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/ ______________________________________________ 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/