Krupski:
As far as accurate time, why not just get a good RTC (for example, this):
It adds another chip (and kind of a big one). Plus the software interface. You also have the issue of synchronizing to a time base that has a resolution of 1 second. You're either freezing the clock or skipping a second every once in a while. Or you have to read the RTC multiple times quickly to try and assess the drift more precisely. Why not just have a better internal clock? The main point of an RTC is to maintain the time when the processor (or at least its clock) is powered down.
Krupski:
[Here's a driver I wrote for this RTC: GitHub - krupski/DS3234: Arduino drivers for the Dallas/Maxim DS3234 Real Time Clock
I didn't come across your library when I was looking for one for the DS3234 recently. But you appear to have made the same mistake that the other libraries I found also made. In order to ensure data integrity you have to read the time registers in burst mode. If you read them one at a time like in your library there is a small chance that there will be a rollover in the middle of reading them. Take a look at the example code that Maxim provides.