How do I invalidate cache for a block for anonymous users on a schedule? At the top of every page of page of my organization's site resides the current hours of operation and current &quot;now open&quot;/&quot;now closed&quot; status, using Views block and Office Hours module).
At this time of night on a Wednesday when logged in, I correctly see that the hours are reflecting tomorrow's hours and that the organization is now closed:

However when logged out, I see that the current day's hours (now over) and &quot;NOW OPEN&quot;. It's six hours after closing time and the 5 minute page cache time in performance settings does not seem to be respected for anonymous page views:

What can I do to force an anonymous cache clear (overkill?) or invalidation of a block for anonymous users, perhaps on a schedule? I'm aware that the built-in Page Cache module may be caching full rendered pages for anonymous users while Dynamic Page Cache module makes it usable for logged in users. Shouldn't Page Cache respect the page cache maximum age set in the Performance settings page? Most people viewing the current hours at the top of every page are anonymous users.
For now I'll manually clear the cache, making the status update properly (not ideal).
At the top of the issue queue of Office Hours is this issue:
Fix javascript in D8-version of office_hours module
The problem is, you need this issue resolved, because for anonymous users javascript has to work.
If you want to build your own module, follow @oknate advice and use a lazy builder in a custom block plugin and install BigPipe to get the javascript part for anonymous logged-in users.
Updated question:
For anonymous users you can instead of disabling the Internal Page Cache set an expires header to the response as suggested by @Berdir's comment. See https://drupal.stackexchange.com/a/196557/47547