DateTime сама по себе не содержит информации о реальном часовом поясе. Он может знать, является ли он UTC или локальным, но не то, что на самом деле означает местный.
DateTimeOffset несколько лучше - это в основном время UTC и смещение. Однако этого все еще недостаточно для определения часового пояса, поскольку многие разные часовые пояса могут иметь одинаковое смещение в любой момент времени. Это звучит так, как будто это может быть достаточно для вас, так как все, с чем вам нужно работать при разборе даты / времени, это смещение.
Поддержка часовых поясов в .NET 3.5 намного лучше, чем была, но мне бы очень хотелось увидеть стандартный "ZonedDateTime" или что-то в этом роде - время в формате UTC и фактический часовой пояс. Создать свой собственный легко, но было бы неплохо увидеть его в стандартных библиотеках.
РЕДАКТИРОВАТЬ: Почти четыре года спустя, я бы сейчас предложил использовать Noda Time , который имеет более богатый набор типов даты / времени. Хотя я предвзят, как главный автор Noda Time:)