Another option besides chrony etc... is to use e.g. the following python script which fetches the time/date from GPS and set it
simply with a "sudo date" command.
#!/usr/bin/python
import os
import sys
import time
from gps import *
print 'Set System Clock to GPS UTC time'
try:
gpsd = gps(mode=WATCH_ENABLE)
except:
print 'ERROR: No GPS Present, time not set!!'
sys.exit()
while True:
#wait until the next GPSD time tick
gpsd.next()
if gpsd.utc != None and gpsd.utc != '':
#gpsd.utc is formatted like"2015-04-01T17:32:04.000Z"
#convert it to a form the date -u command will accept: "20140401 17:32:04"
#use python slice notation [start:end] (where end desired end char + 1)
# gpsd.utc[0:4] is "2015"
# gpsd.utc[5:7] is "04"
# gpsd.utc[8:10] is "01"
gpsutc = gpsd.utc[0:4] + gpsd.utc[5:7] + gpsd.utc[8:10] + ' ' + gpsd.utc[11:19]
os.system('sudo date -u --set="%s"' % gpsutc)
sys.exit()