var now = new Date ();
function CheckDLT (sm, em)
{
return ((new Date (em)). getTimezoneOffset () - (new Date (sm)). getTimezoneOffset ());
}
function getTZLowerBound (start, end, cmp)
{
var nstart, count, count2;
count = end - start;
while (count> 0)
{
end = start + count;
nstart = start + (count2 = Math.floor (count / 2));
if (cmp (CheckDLT (nstart, end)))
{
start = nstart + 1;
count - = count2 + 1;
}
else
count = count2;
}
return [start, - (new Date (start)). getTimezoneOffset ()];
}
var dlt = Date.UTC (now.getFullYear (), 0, 1, 0, 0, 0, 0),
std = Date.UTC (now.getFullYear (), 6, 1, 0, 0, 0, 0);
if (SheckDLT (dlt, std))
{
dlt = getTZLowerBound (dlt, std, function (b) {return (b <0)});
std = getTZLowerBound (Date.UTC (now.getFullYear (), 6, 1, 0, 0, 0, 0),
Date.UTC (now.getFullYear (), 11, 1, 0, 0, 0, 0),
function (b) {return (b> 0)});
dlt [0] = dlt [0] + std [1] * 60000;
std [0] = std [0] + dlt [1] * 60000;
}
else
std = dlt = [0, -now.getTimezoneOffset ()];
Source: https://habr.com/ru/post/26543/
All Articles