mam aplikację, która będzie odczytywać dane z SQL i wysłać go poprzez WCF do aplikacji klienckiej, w sposób podobny do tego:How to DataSet.Fill z wartościami DateTime domyślnie DateTimeKind.Utc?
SqlDataAdapter da = new SqlDataAdapter(cmd)
DataSet ds = new DataSet();
da.Fill(ds);
return ds;
All data/czas są przechowywane w bazie danych jako UTC. Zauważyłem, że jeśli zegar na komputerze, na którym działa aplikacja, jest zniekształcony, to data/czas otrzymany przez klientów będzie również zniekształcona. Wydaje się, że w przypadku, gdy typ DateTime ma nieokreślony rodzaj, WCF będzie go reprezentował jako czas lokalny wewnętrznie i wysyłał jako taki, więc każda różnica czasu między aplikacją a klientem spowoduje zmianę daty/godziny.
Mogę z pewnością przechodzić przez zestawy danych podczas ich pobierania i poprawiania pól daty/czasu, ale czy ktokolwiek tutaj pomyśli o lepszym sposobie wypełniania zestawu danych, tak, że każde pole DateTime będzie automatycznie DateTimeKind.Utc na da.Fill()?
"Ustaw DateTimeMode = DataSetDateTime.Unspecified dla danej kolumny DataColumn po wypełnieniu DataSet" działało idealnie. Dzięki! – galets
fajne, chętnie pomoże. –
Aby usunąć przesunięcie wysłane w wartości DateTime sformatowanej w formacie JSON, ustaw opcję "DateTimeMode = DataSetDateTime.Utc". – Suncat2000