Проблема, с которой вы, вероятно, сталкиваетесь, заключается в том, что большинство драйверов БД при извлечении из базы данных создают DateTime
с DateTimeKind.Unspecified
, который может неправильно преобразовываться в UTC, даже если вы используете ToUniversalTime
. Чтобы обойти это, я использую метод расширения, подобный этому:
public static DateTime ToSafeUniversalTime(this DateTime date) {
if(date != DateTime.MinValue && date != DateTime.MaxValue) {
switch(date.Kind) {
case DateTimeKind.Unspecified:
date = new DateTime(date.Year, date.Month, date.Day, date.Hour, date.Minute, date.Second, DateTimeKind.Utc);
break;
case DateTimeKind.Local:
date = date.ToUniversalTime();
break;
}
}
return date;
}