Tengo una aplicación que lee los datos de SQL y enviarlo a través de WCF para una aplicación cliente, de una manera similar a esto:Cómo DataSet.Fill con valores de fecha y hora predeterminados a DateTimeKind.Utc?
SqlDataAdapter da = new SqlDataAdapter(cmd)
DataSet ds = new DataSet();
da.Fill(ds);
return ds;
Toda la fecha/horas se almacenan en la base de datos como UTC. Lo que noté es que si el reloj en la computadora que ejecuta la aplicación está sesgado, la fecha/horas recibidas por los clientes también serán sesgadas. Parece que en el caso de que el tipo DateTime no sea del tipo especificado, WCF lo representará como hora local internamente y lo enviará como tal, por lo que cualquier diferencia de tiempo entre la aplicación y el cliente hará que la fecha/hora cambie.
Sin duda podría ir a través de los conjuntos de datos que se recuperan y fijar campos de fecha/hora, pero ¿alguien aquí pensar en una mejor manera de llenar el conjunto de datos, para que cada campo DateTime sería DateTimeKind.Utc en da.Fill automáticamente()?
"Set DateTimeMode = DataSetDateTime.Unspecified para la DataColumn en cuestión después de que se llene el DataSet" funcionó a la perfección. ¡Gracias! – galets
genial, me alegro de ayudar. –
Para eliminar el desplazamiento enviado en valores DateTime con formato JSON, establezca 'DateTimeMode = DataSetDateTime.Utc'. – Suncat2000