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());
}