Вероятно, вы видите проблему, если временная часть типа DateTime равна 12:00:00. Если это значение (14 января 2007 г., 12:00) будет отправлено в EST, оно будет смещено при перемещении по западным часовым поясам (т. Е. 13 января 2007 г., 23:00 в CST)
Лучший способ избежать этого - убедиться, что вы храните данные DateTime в инвариантном типе (преобразуйте их в UTC или по Гринвичу). Затем, когда вы добираетесь до того, что потребителю нужны данные, они могут изменить данные в представление, зависящее от локали. Если вы не можете контролировать, как данные сохраняются, просто убедитесь, что вы преобразовываете их в инвариантный тип по мере извлечения, прежде чем вернуть его клиенту.
Ссылка, на которую ссылается @Joe, полезна, в противном случае приведен довольно большой технический документ с подробным описанием передовых методов решения этой проблемы.
http://msdn.microsoft.com/en-us/library/ms973825.aspx
Вот переполнение стека Q'n'A, касающееся также некоторых новых технологий.
Лучшие практики для сериализации DateTime в .NET 3.5
Примечание: в первой ссылке, которую я добавил, есть интересный момент о сериализации некоторых из этих типов дат в зависимости от того, используете ли вы стеки 1.1 / 2.0. Обратите на это внимание, так как он укусил меня пару раз; -)