2015-11-10 2 views
0

У меня есть сайт, запущенный на сервере, расположенном в зоне, где применимы изменения летнего времени. Я храню определенные даты в качестве локального времени в базе данных. Когда я верну эти даты назад в сюжет в Fullcalendar (jQuery), он автоматически изменяет время на часовой пояс браузера. У меня есть логика на стороне сервера, чтобы показать дату в календаре. Но, когда изменения дневного времени применимы, время в календаре показывает разницу в час. Я хочу смещение этого сохранения в коде, чтобы я мог поместить некоторую логику, чтобы игнорировать или отменять этот вид времени.Как получить смещение летнего времени, если применимо

+1

Возможно, лучше сохранить даты в вашей БД в UTC. – juharr

ответ

0

Я получил решение:

var returnDate = System.DateTime.Now.ToUniversalTime(); 
var tRules = TimeZoneInfo.Local.GetAdjustmentRules().ToList(); 
var rule = tRules.OrderBy(x => x.DateEnd).FirstOrDefault(); 
var timeSpan = rule.DaylightDelta; 
if (timeSpan != null) 
{ 
    returnDate = returnDate + timeSpan; 
} 

Если изменения экономии дневного света разрешены в настройках даты и времени, то AdjustmentRules будет возвращено, другое мудрым пустым.

Таким образом, промежуток времени - это час & минут для привязки к требуемому значению даты и времени.

Смежные вопросы