linq to sql - Linq2EF: Return DateTime with a TimeZone Offset -


our database has times stored utc, , know user's current timezone, want return relative that. want incorporate offset in linq projection so:

var users = u in this.context.users             select new userwithcorrecteddate             {                 id = u.id,                 firstname = u.firstname,                 lastname = u.lastname,                 registrationdate = u.registrationdate.value.addhours(-5)             }; 

of course, linq2ef cannot convert "addhours" canonical function. there way this?

update:

another thought, if timezone offset stored in database column, there way have db perform calculation (date + offset)?

linq entities supports sqlfunctions. if know offset number of hours this:

var users = u in this.context.users             select new userwithcorrecteddate             {                id = u.id,                firstname = u.firstname,                lastname = u.lastname,                registrationdate = sqlfunctions.dateadd("hour", -5, u.registrationdate.value)             }; 

if want more precise using timezone function, (this bit of workaround):

public static datetime utctonewyorktime(datetime utcdatetime) {         timezoneinfo tzi = timezoneinfo.findsystemtimezonebyid("eastern standard time");          datetime converted = timezoneinfo.converttimefromutc(utcdatetime, tzi);         return converted; } 

and in poco userwithcorrecteddate object, have property timezoned date ie.

public class userwithcorrectdate {     public datetime utcdate {get;set;}     public datetime nydate     {                  {             return utilities.utctonewyorktime(this.utcdate);         }     } } 

Comments

Popular posts from this blog

c++ - Convert big endian to little endian when reading from a binary file -

C#: Application without a window or taskbar item (background app) that can still use Console.WriteLine() -

unicode - Are email addresses allowed to contain non-alphanumeric characters? -