Le problème est que ctime utilise l'heure locale, donc cela se retrouve dans le décalage.
Si vous voulez GMT, vous devez utiliser asctime(gmtime(&time)) , qui vous donnera une date/heure sans influence de l'heure locale.
ctime est l'équivalent de asctime(localtime(&time))