O problema é que
ctime
usa localtime, de modo que acaba no deslocamento. Se você quer GMT, então você deve usar
asctime(gmtime(&time))
, que lhe dará uma data/hora sem influências de hora local. ctime
é o equivalente a asctime(localtime(&time))