Non ho idea se e dove stai sbagliando, dato che non conosco il tuo codice.
In effetti la GetUtcOffset non è proprio indispensabile, anche se può risultare utile.

Ti mostro come ho fatto io, così puoi confrontare con il tuo codice

codice:
        Dim localZone As TimeZone = TimeZone.CurrentTimeZone
    Dim baseUTC As DateTime = New DateTime(2000, 1, 1, 10, 30, 12)
    Dim localTime As DateTime = localZone.ToLocalTime(baseUTC)
    Dim localOffset As TimeSpan = localZone.GetUtcOffset(localTime)
    Debug.Print("baseUTC    : " + baseUTC)
    Debug.Print("localTime  : " + localTime)
    Debug.Print("localOffset: " + localOffset.ToString)
ed il risultato è questo:

codice:
baseUTC    : 01/01/2000 10.30.12
localTime  : 01/01/2000 11.30.12
localOffset: 01:00:00
Ciao