
Issue #21533 has been updated by nobu (Nobuyoshi Nakada). I'm not against the methods themselves, since there are similar methods such as `monday?`, `tuesday?`, and so on. (no `january?`, `february?`, etc though) But your example, selecting by `am?`, seems less convincing. What will you do if the criteria is changed, or more options are added? Add `morning?`, `daytime?`, and others? ```ruby def reminder_deferral_options now = Time.now options = [] options << ["Around noon", "around_noon"] if now.morning? options << ["Later today", "later_today"] if now.am? options << ["Tonight", "tonight"] if now.daytime? options << ["Tomorrow morning", "tomorrow_morning"] options << ["Pick a date/time…", "custom"] options end ``` ---------------------------------------- Feature #21533: Introduce `Time#am?` and `Time#pm?` https://bugs.ruby-lang.org/issues/21533#change-114235 * 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/