a) Manual way through Sitecore PowerShell IDE
You can achieve this by Sitecore Powershell Extensions (SPE).
As your requirement is to enable/disable publishing targets, I would set Write permissions and keep Read permissions enabled. This will still show those publishing targets but enable/disable them as needed.
SPE script to disable Publishing Target:
$acl = New-ItemAcl -AccessRight item:write -PropagationType Any -SecurityPermission DenyAccess -Identity "{username_goes_here}"
Get-Item -Path "master:\system\Publishing targets\{your publishing target goes here}" | Set-ItemAcl -AccessRules $acl -PassThru
SPE script to enable Publishing Target:
$acl = New-ItemAcl -AccessRight item:write -PropagationType Any -SecurityPermission AllowAccess -Identity "{username_goes_here}"
Get-Item -Path "master:\system\Publishing targets\{your publishing target goes here}" | Set-ItemAcl -AccessRules $acl -PassThru
b) Automated way through Sitecron
More automated way would be to combine SiteCron and these Powershell scripts mentioned above.
To do that:
Create corresponding Powershell Script items under /sitecore/system/Modules/PowerShell/Script Library/Sitecron/Publishing Targets/
. I have created these items based on "PowerShell Script" template. The parent item "Publishing Target" was created based on "PowerShell Script Library" template


Create corresponding Sitecron Jobs under /sitecore/system/Modules/Sitecron/
. Specify Type field as Sitecron.Jobs.PowerShell.ExecuteScript, Sitecron
. I have created them based on "Sitecron job" template:


and just assigned scripts created in step 1 in "Items" field:

