JSFiddle - React, Tailwind, and code Playground
by junto
HTML
<table id="container">
<tr><th>DevExpress</th><th>Fixed</th></tr>
</table>
CSS
.error {
color: #ff0000;
}
JavaScript
var baseDate = new Date("March 6, 2016 11:00:00 GMT");
var dxDate = new Date();
dxDate.setTime(1457258400000); // Sat Mar 26 2016 23:00:00 GMT+0100 (W. Europe Standard Time)
var fixedDate = new Date();
fixedDate.setTime(1457258400000); // Sat Mar 26 2016 23:00:00 GMT+0100 (W. Europe Standard Time)
var daysToAdd = 1;
for (i=0; i<30; i++)
{
dxDate = addDays(dxDate, daysToAdd);
fixedDate = addDaysFixed(fixedDate, daysToAdd);
if (dxDate.getTime() != fixedDate.getTime())
{
$("#container").append("<tr class=\"error\"><td>" + dxDate + "</td><td>" + fixedDate+ "</td></tr>");
}
else
{
$("#container").append("<tr><td>" + dxDate + "</td><td>" + fixedDate+ "</td></tr>");
}
}
function addDays(date, count) {
var newDate = cloneDate(date);
newDate.setUTCDate(count + newDate.getUTCDate());
_aspxFixTimezoneGap(date, newDate);
return newDate;
}
function cloneDate(date) {
var cloned = new Date();
cloned.setTime(date.getTime());
return cloned;
}
function addDaysFixed(date, count) {
var newDate = cloneDateFixed(date);
newDate.setUTCDate(count + newDate.getUTCDate());
_aspxFixTimezoneGap(date, newDate);
return newDate;
}
function cloneDateFixed(date) {
var cloned = new Date();
cloned.setTime(date.getTime() + date.getTimezoneOffset() * 60000);
return cloned;
}
function _aspxFixTimezoneGap(oldDate, newDate) {
var diff = newDate.getHours() - oldDate.getHours();
if(diff == 0)
return;
var sign = (diff == 1 || diff == -23) ? -1 : 1;
var trial = new Date(newDate.getTime() + sign * 3600000);
if(sign > 0 || trial.getDate() == newDate.getDate())
newDate.setTime(trial.getTime());
}