Conversão entre fusos horários em C

Eu preciso converter o tempo entre os fusos horários em C (no linux, então qualquer coisa específica também faria).

Eu sei o meu tempo atual, local e UTC, eu tenho o deslocamento do tempo de destino. Eu estou tentando usar o mktime, gmtime, localtime e um conjunto semelhante de funções, mas ainda não consigo descobrir.

Desde já, obrigado.