Short answer, the bitcoin protocol can't do that.
Long answer, this only can be done on the client side. This is with custom scripts and cronjobs, but that has another problem for the final user, they need to have their privatekey in some computer. Also there is no waranty that there is going to be utxos available for it
Time-locked transactions can work, but the user needs to reserve some Utxo for that. If the Utxo is spent before the date, the time-locked transactions become useless.
Also for this approach there is a problem: the Time-locked transactions is a policy for the mempool, but not for the miners I read before that if the time-locked transactions is sent to a miner they can mined that regardless of the time-locked restriction.