DateTime elle-même ne contient aucune information sur le fuseau horaire réel. Il peut savoir si c'est UTC ou local, mais pas ce que signifie vraiment local.
DateTimeOffset est un peu mieux - c'est essentiellement une heure UTC et un décalage. Cependant, ce n'est pas encore assez pour déterminer le fuseau horaire, car de nombreux fuseaux horaires différents peuvent avoir le même décalage à un moment donné. Cela semble être assez bon pour vous, car tout ce que vous avez à faire lorsque vous analysez la date et l'heure est le décalage. La prise en charge des fuseaux horaires à partir de .NET 3.5 est beaucoup mieux que ce qu'elle était, mais j'aimerais vraiment voir un standard "ZonedDateTime" ou quelque chose comme ça - une heure UTC et un fuseau horaire réel. Il est facile de créer le vôtre, mais ce serait bien de le voir dans les bibliothèques standard.
EDIT: Près de quatre ans plus tard, je suggère maintenant d'utiliser Noda Time qui a un ensemble plutôt plus riche de types date/heure. Je suis biaisé cependant, en tant qu'auteur principal de Noda Time :)
Le projet PublicDomain sur CodePlex fait cela pour vous. – Cheeso
Une énumération TimeZone dans la BCL serait bien si les fuseaux horaires mondiaux sont statiques et ne changent pas. – jlafay
@jlafay: Cependant, ils changent - d'autres fuseaux horaires ont été ajoutés à Windows l'année dernière, par exemple. –