Getting millisecond and microsecond time

I was also thinking of the 1 Hz output.

Trigger an interrupt, that records the current value of the micros() timer. Then to record your sensor time use the current time (from now()) plus micros() - recordedMicros. That should give you a pretty accurate timestamp.

Of course that are still not absolute times as it depends also on how well the RTC is set, it does give you the time between the time you recorded an event. Which in turn is not necessarily when it happened: all sensors have a reaction time, and it takes some time for your sketch to read each individual sensor. Even if you have the sensors fire interrupts on events you have to keep reaction time/conversion time in mind.