"Embedding an expiry date" (as stated in the title) is the easy part and as Eckes has pointed out there are already standard wasy to do it. But these schemes usually rely on the cooperation of the participants.
For example your browser usually will at least warn you if you connect to sites with expired certificates.
If you want to enforce the inability to encrypt the data after a certain date, this is one facet of controlling access for geerally legitamete users which is usually called DRM (a term seen rather negatively in some circles due to some debatable use cases). The problem there is not so much about the protocols but about the implementations. How do you prevent copies of the decrypted data? How do stop users "debugging" the software and extracting the keys? How prevent faking the time?
Your users have the keys, but you want to prevent unlimited usage.
There are techniques that try to achieve this goal (with or without special hardware or OS support), but most of them have failed over sooner or later.