У меня есть приложение, которое считывает данные из SQL и отправляет их через WCF в клиентское приложение, подобно следующему:
SqlDataAdapter da = new SqlDataAdapter( cmd )
DataSet ds = new DataSet();
da.Fill( ds );
return ds;
Все дата / время хранятся в базе данных как UTC. Что я заметил, так это то, что если часы на компьютере, на котором запущено приложение, искажены, дата / время, полученные клиентами, также будут искажены. Кажется, что в случае, когда тип DateTime имеет неопределенный тип, WCF будет представлять его как локальное время внутри страны и отправлять как таковой, поэтому любая разница во времени между приложением и клиентом приведет к смещению даты / времени.
Я, конечно, мог бы просматривать наборы данных по мере их извлечения и фиксировать поля даты / времени, но кто-нибудь здесь придумал бы какой-нибудь лучший способ заполнить набор данных, чтобы каждое поле DateTime автоматически было DateTimeKind.Utc на da.Fill )