Ho un'applicazione che leggere i dati da SQL e inviarlo via WCF per un'applicazione client, in modo simile a questo:Come DataSet.Fill con valori DateTime predefiniti a DateTimeKind.Utc?
SqlDataAdapter da = new SqlDataAdapter(cmd)
DataSet ds = new DataSet();
da.Fill(ds);
return ds;
tutte le informazioni/tempi sono memorizzati nel database come UTC. Quello che ho notato è che se l'orologio sul computer che esegue l'applicazione è distorto, anche la data/l'ora ricevuta dai client sarà distorta. Sembra che nel caso in cui il tipo DateTime sia di tipo non specificato, WCF lo rappresenterà come ora locale internamente e invierà come tale, quindi qualsiasi differenza di orario tra l'applicazione e il client causerà lo spostamento di data/ora.
Potrei sicuramente passare attraverso i set di dati mentre vengono recuperati e correggere i campi data/ora, ma qualcuno qui potrebbe pensare ad un modo migliore per riempire il set di dati, in modo che ogni campo DateTime sia automaticamente DateTimeKind.Utc su da.Fill()?
"Imposta DateTimeMode = DataSetDateTime.Unspecified per DataColumn in questione dopo il riempimento del DataSet" ha funzionato perfettamente. Grazie! – galets
cool, felice di aiutare. –
Per rimuovere l'offset inviato in valori DateTime formattati JSON, impostare 'DateTimeMode = DataSetDateTime.Utc'. – Suncat2000