I did this previously with a few lines added to a theme
I added a conditional statement in the course layout which added a body class based on the date - and set it to calculate for around 7 days before the course start date (something like 'hidecontent').
Then the theme had a display block at the top of the page which was shown whenever body class 'hidecontent' was present which said something along the lines of 'This content will be available 7 days prior to the published course start date', while the main content was hidden.
All this was overridden if the user had editing capabilities. And the fact that the course wasn't hidden means it still displayed on the dashboard, and also that the date and the hide/show was automatic meant that tutors didn't have to go in and manually hide/reveal the content or course itself - although they still could if they wanted things hidden even after the release date.
This was a css
"display:none" hide, though so anyone with knowledge to get at the browser tools would be able to override it and see the content - but the point was to highlight to users that the content hadn't been officially released, rather than to make it secret, so it did what was needed at the time.
I'm not sure I still have access to the code of that theme as I'm no longer at the university I did it for, but if you need it, I can try to find a copy, though it may not be upto date.