Yes, it's possible.
One option is to create a
time locked transaction; In this condition, a transaction would not be available for verification or confirmation untilt the blockheight indicated in the transaction information. This means it would be unspendable by the receiving address until the specified time. This of course comes with its pros and cons;
• The transaction can be cancelled by the sending address,
• There can be a change to the Bitcoin network in the distant future that will render the transaction invalid.
That's not quite what the OP appears to be asking... This timelock (using nLocktime), actually makes the spending transaction invalid until a certain time.
It's not really locking bitcoins, as they can still be spent in other transactions.
To lock bitcoins... you would need to use the
CheckLockTimeVerify (CLTV) or
CheckSequenceVerify (CSV) opcodes to lock the UTXO themselves.
For an example of CLTV in action... I posted this example in another thread (it uses coinb.in and testnet):
https://bitcointalk.org/index.php?topic=5287093.msg55533007#msg55533007