Используя .NET 3.5, вы можете использовать TimeZoneInfo.GetSystemTimeZones (), а затем выполнять итерацию, пока не найдете совпадение с помощью BaseUtcOffset.
Имейте в виду, что в каждом смещении может быть несколько записей, поэтому ваши результаты будут несколько произвольными.