There are a lot of options. None of them are trivially easy, but there are shortcuts for some of them. You didn't say much about your target application and budget so it is hard to say which might be good or bad (or absurd because you want to use a tiny micro rather than an ARM running Linux).
Receive a time code by radio and decode it (e.g.
WWVB or
CHU)
Receive GPS and decode it. Lots of modules available for this, mainly giving one pulse per second and a serial time code stream.
Connect to the Internet, perhaps wirelessly, and run the network time protocol.
Decode cell phone transmissions from the nearest tower which include network time.