How to keep some fields or a content type private
You can do this using Views. Set up a contextual filter for the node id. And then a filter that sets a condition on your date field. This means the View will only have results when (a) your node is displayed and (b) the date condition is matched. Set the filter up as a block. And set that block to show only for that node type.

This is an approach I've used a lot. For example, you can use the same approach to show some fields to logged on users but not to non-logged on users. In effect, you're using the View to show fields depending on some condiiton.