scheduling
Allows scheduling content entities either for absolute ranges, for example to have content be published starting at a specific date in the future, or for recurring ranges, for example to have content be published on a specific weekday each week.
For recurring scheduling, content can be scheduled daily, weekly, monthly or yearly. To make this recurring scheduling less daunting for users, you start by selecting a given date range using the regular core date range widget. If the range is applicable for a recurring schedule, you can then optionally select to enable a recurring schedule. For example, if you select a date range of 10am to 2pm on January 1 of a given year, you can then choose if you want to schedule this content daily from 10am to 2pm, on the 1st of every month from 10am to 2pm, etc.
Whether or not content is currently scheduled is checked at runtime, so that no cron job is required for this module, and the scheduling is precise to the second. The access checking is also query-aware and integrates with Drupal's caching API, so that, for example, for a View that will contain a piece of scheduled content in the future the entire output of the view (without the scheduled content) can be cached until the very second that the content is scheduled at which point it will be recomputed and subsequently cached until the next scheduling change.
Note that currently the patch from #2352009: Bubbling of elements' max-age to the page's headers and the page cache needs to be applied in order for the core Page Cache to respect the cache max-age of scheduled content or pages that contain scheduled content (or may contain it in the future).