The TimeZone data type was introduced in .Net 1.0 as a mechanism for retrieving information about the current time zone, and to convert times from local time to Coordinated Universal Time (UTC) or vice versa. The down side is that you cannot use this to represent any other time zone other than the local zone. It also can’t be used to convert one date time to another zone. This is a pretty sever limitation and something that .Net has been lacking for some time.
In .Net 3.5, Microsoft finally introduced a replacement for TimeZone. The TimeZoneInfo class fills in all of the gaps where TimeZone left off. You can represent any time zone and perform various calculations. Many people have yet to hear of this class, but it is crucial if you are working with applications that need to perform calculations on dates and times which may originate from differet time zones.
[http://www.danrigsby.com/blog/index.php/2008/08/24/timezone-vs-timezoneinfo-in-net/]