DHTMLX/scheduler и проблема 7 января hot fix
Описание проблемы http://habrahabr.ru/post/239423/
Толи фикс уже вышел, то ли нет, но сейчас поведение такое.
Tue Jan 06 2015 00:00:00 GMT+0800 (RTZ 7 (зима))
new Date(2015, 0, 7);
Wed Jan 07 2015 01:00:00 GMT+0900 (RTZ 7 (лето))
new Date(2015, 0, 8);
Thu Jan 08 2015 00:00:00 GMT+0900 (RTZ 7 (лето))
new Date(2015, 0, 7);
Wed Jan 07 2015 01:00:00 GMT+0900 (RTZ 7 (лето))
new Date(2015, 0, 8);
Thu Jan 08 2015 00:00:00 GMT+0900 (RTZ 7 (лето))
Что вызывает проблемы в методе увеличения даты в календаре.
У нас же календарь отказался уже 15 декабря работать, из-за особенностей реализации.
hot fix — перезаписать метод добавления времени в init методе
К оригиналу добавлено сравнение таймзон
scheduler.date.add=function(date, inc, mode){
var ndate=new Date(date.valueOf());
switch(mode){
case "week":inc*=7;
case "day":
ndate.setDate(ndate.getDate()+inc);
!date.getHours() && ndate.getHours()
&& date.getTimezoneOffset()==ndate.getTimezoneOffset()
&& ndate.setTime(ndate.getTime()+60 * 60 * 1000 *(24-ndate.getHours()));break;
case "month":ndate.setMonth(ndate.getMonth()+inc);break;
case "year":ndate.setYear(ndate.getFullYear()+inc);break;
case "hour":ndate.setHours(ndate.getHours()+inc);break;
case "minute":ndate.setMinutes(ndate.getMinutes()+inc);break;
default:return scheduler.date["add_"+mode](date, inc, mode)}
return ndate;
}
var ndate=new Date(date.valueOf());
switch(mode){
case "week":inc*=7;
case "day":
ndate.setDate(ndate.getDate()+inc);
!date.getHours() && ndate.getHours()
&& date.getTimezoneOffset()==ndate.getTimezoneOffset()
&& ndate.setTime(ndate.getTime()+60 * 60 * 1000 *(24-ndate.getHours()));break;
case "month":ndate.setMonth(ndate.getMonth()+inc);break;
case "year":ndate.setYear(ndate.getFullYear()+inc);break;
case "hour":ndate.setHours(ndate.getHours()+inc);break;
case "minute":ndate.setMinutes(ndate.getMinutes()+inc);break;
default:return scheduler.date["add_"+mode](date, inc, mode)}
return ndate;
}