Sitecore provides a functionality to auto publish items based on the publishable from and publishable to dates set on the item.
This functionality is not turned on by default in Sitecore. We need to configure an agent which runs every x number of minutes and publish the items based on the publishable from and to dates.
This configuration can be turned on in Sitecore.config file.
<agent type="Sitecore.Tasks.PublishAgent" method="Run" interval="00:00:00"> <param desc="source database">master</param> <param desc="target database">web</param> <param desc="mode (full or smart or incremental)">incremental</param> <param desc="languages">en, da</param> </agent>
Source database is the database from which publish should happen from.
The target database is the database to which publish should happen to.
the mode can be full, smart and incremental. Full will do a complete republish, smart will publish the items that are modified from last publish, incremental will publish items that are in the queue.
We can specify the languages that are to be published as well from languages parameter.
If the interval is 00:00:00 means this agent is disabled. Modify this to 00:01:00 to run this agent for every one minute.
Keep in mind on every publish the HTML cache clear will happen. Make sure not to run this task very often. It will be a huge impact on performance.
Better way of handling auto publish at specific time can be found here - Sitecore auto publish at specific time
Hope this helps.