By default, if the programmer does not specify the DateTime kind, .NET WCF services will serialize and deserialize DateTime objects based on the local time zone. What this means is that if you have a client entering information on the east coast (EST) and your server is in central time (CST), the DateTime values entered by the client will have their hour decremented by 1 when the data is deserialized at the server.
The reason why WCF behaves this way is because it thinks that the DateTime entered on the client is in local time. As a result, when the value reaches the server, 11:00 AM client local time is converted to 10:00 AM because that is what the local time is on the server.
If this is not what is desired, specifying the kind of the DateTime value appears to alter the serialization/deserialization behavior. Specifying what kind of date your value is will not alter the underlying value.
Unspecified - No conversion: returnValue = DateTime.SpecifyKind(value, DateTimeKind.Unspecified)
Local - Time Zone conversions: returnValue = DateTime.SpecifyKind(value, DateTimeKind.Local)
UTC – No conversions: returnValue = DateTime.SpecifyKind(value, DateTimeKind.Utc)