.net - Assume local instead of Unspecified DateTime from SQL Server -
because sql server datatype datetime
not keep timezone information, sqlclient in .net instantiating datetime
objects kind
set datetimekind.unspecified
. of cause right thing - theoretically. every application have worked on has stored datetime assuming local, , lived happy long time.
but when globalization demands arise, there trouble assumption / convention. instance json serialization not trusted!
so question: possible either on database, or on web server, enforce datetime read database (via sqlclient.datareader.getdatetime
) assumed datetimekind.local
?
i don't think there's way enforce datetime
pulled reader automatically assumed local time, it's easy enough change afterwards using specifykind
method:
var unspecifiedvalue = yourreader.getdatetime(yourcolumn); var localvalue = datetime.specifykind(unspecifiedvalue, datetimekind.local);
you wrap in extension method if prefer (either hardcoding datetimekind
i've done here, passing in argument, or pulling config):
var localvalue = yourreader.getlocaldatetime(yourcolumn); // ... public static datetime getlocaldatetime(this idatarecord source, int i) { if (source == null) throw new argumentnullexception("source"); return datetime.specifykind(source.getdatetime(i), datetimekind.local); }
Comments
Post a Comment