Let's assume that our calendar will survive indefinitely in its present
form, and that you are happy with a granularity no finer than seconds.
An instant in time, then, can be described by these components: seconds
(0-59 - we'll ignore leap-seconds); minutes (0-59); hours (0-23); days
(0-30); months (0-11); and years.
Leaving years aside for the time being: if we wish to store mdhms as
separate data elements, we need a minimum of 26 bits. If we are prepared
to combine them, maybe we can save some bits. We could simply store the
number of seconds in a year, which, in a leap year, could be
approximately 31557600. This value can be stored in 25 bits. Okay, so we
saved one single bit. (Is that a worthwhile saving? Probably not. But
you asked for the smallest number of bytes, and that suggests that we
should try to economise on every possible bit.)
Now let's think about years. If we try to fit a year value into 7 bits
(which is tempting, since it gives us 32 bits altogether), the biggest
number we can have is 127 (in which case the smallest would be 0). We
could say "okay, let's use that to describe the year range 2010 to
2137", in which case the answer to your question is 32 bits. But if we
want something more durable than that, or if we need to extend into the
past, then we will need more bits.
If you're happy with a 128-year range, then, you will need 32 bits,
which is guaranteed to fit into 4 bytes, because a byte is guaranteed to
be at least 8 bits wide. Bytes can be wider than that, though, so you
might be able to squeeze 32 bits into fewer bytes on some systems.