c# - DateTimeOffset to DateTime conversion - Data Loss -


when convert datetimeoffset value datetime value, there possibility data loss. msdn documentation, conversion datetimeoffset datetime mentioned follows:

the datetime property commonly used perform datetimeoffset datetime conversion. however, returns datetime value kind property unspecified. means information datetimeoffset value's relationship utc lost conversion when datetime property used.

to indicate converted datetime value utc time, can retrieve value of datetimeoffset.utcdatetime property. differs datetime property in 2 ways:

it returns datetime value kind property utc. if offset property value not equal timespan.zero, converts time utc.

i see following method convert datetime offset datetime:

static datetime convertfromdatetimeoffset(datetimeoffset datetime) {    if (datetime.offset.equals(timespan.zero))       return datetime.utcdatetime;    else if (datetime.offset.equals(timezoneinfo.local.getutcoffset(datetime.datetime)))       return datetime.specifykind(datetime.datetime, datetimekind.local);    else       return datetime.datetime;    } 

now in our system converting datetimeoffset datetime in above way. later want convert datetime datetimeoffset.

as example:

datetime dt = convertfromdatetimeoffset(datetimeoffset); datetimeoffset dofsetnew = new datetimeoffset(dt); 

my question whether under circumstances datetimeoffset , dofsetnew different ? if conversion loss data.

the way it's written - yes, anytime input datetimeoffset @ utc offset that's value other 0 , local timezone (that last 'else' condition). imho, you're better off using utcdatetime, assuming potential timezone conversion involved there acceptable.

also, if local timezone observes dst, there's loss there during ambiguous hour each year, since won't know 1 of them represents.

if need ensure there's no loss, either don't convert datetime , stay datetimeoffset (sql server type 'datetimeoffset') or if must, keep utc offset separate value pass along it, can reconstruct datetimeoffset 2 values (datetime , offset).


Comments

Popular posts from this blog

django - How can I change user group without delete record -

java - Need to add SOAP security token -

java - EclipseLink JPA Object is not a known entity type -