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))