GPS time accuracy (SIM808 or similar) - process between NMEA sentences and AT command response
The SIM808 has a 1 pps output on pad 37, so for higher accuracy you could capture this in an interrupt and use it to discipline your MCU's internal sense of time.

Based on Dave's suggestion that the serial time information is "stale" it seems like you might want to do something like to take that value, prune the fraction, add 1 second, and cache it so that the next interrupt will know which second is being marked.  

Or if you can configure an MCU hardware timer to reset on external input from the PPS signal and count up otherwise, you may be able to do a query and replace the fractional seconds in the result with a conversion to fractional seconds of the timer's current count.

In either case you probably want to take care if your issue one of these queries near the end of a second, where it could be ambiguous if the reply you get is reporting the old whole seconds or the new.  Saving the internal sense of time from when the query is issued might work - if the reply you calculate is "earlier" than the time you asked, you probably need to add a second to fix it.