Planned private posts get published immediately

The problem is that changing the post visibility to private invokes a status change, in a way private is not only a visibility but also a publishing status. Or to quote the WordPress Codex, section »Content Visibility – Private Content«.

Once you change the visibility to private, the post or page status
changes to “Privately Published” as shown. Private posts are
automatically published (…).

To achieve what you want you probably have to work with the publish_post or even better the publish_future_post hook. Another possibility is to work with Post Status Transitions and the according hooks.