Soweit ich das im Kopf hab, können die Funktionen ala
FormatDateTime nicht mir Zeitzonen umgehen.
(ist aber auch verständlich, da die Zeitzone nicht gesondert im TDateTime gespeichert werden kann)
Es gibt für andere Datumsformate z.B. sowas wie
LocalTimeToFileTime.
Aber du kannst den String bis zur Sekunde immernoch über FormatDateTime erstellen, mußt vorher nur noch die Zeitzone aus dem TDateTime rausrechnen und dann selber als String hinten wieder anhängen.
Eventuell hilft dir
TTimeZone dabei.