X-Git-Url: https://adrianiainlam.tk/git/?a=blobdiff_plain;f=dygraph-tickers.js;h=c6939cbb6eb08e21d89cae5736535974bdc9e40d;hb=4d402efd2ad8318651a7fa809133a47a17db1288;hp=4b4d9dd138c3e1739ceb3c87fc288433ff8693ab;hpb=9a4fd029e0cfd7ed2d89b54659df5e2d6b8b5d9d;p=dygraphs.git diff --git a/dygraph-tickers.js b/dygraph-tickers.js index 4b4d9dd..c6939cb 100644 --- a/dygraph-tickers.js +++ b/dygraph-tickers.js @@ -392,9 +392,21 @@ Dygraph.getDateAxis = function(start_time, end_time, granularity, opts, dg) { // daylight savings transitions. Without this, the ticks could get off // by an hour. See tests/daylight-savings.html or issue 147. if (check_dst && d.getTimezoneOffset() != start_offset_min) { - t += (d.getTimezoneOffset() - start_offset_min) * 60 * 1000; + var delta_min = d.getTimezoneOffset() - start_offset_min; + t += delta_min * 60 * 1000; d = new Date(t); start_offset_min = d.getTimezoneOffset(); + + // Check whether we've backed into the previous timezone again. + // This can happen during a "spring forward" transition. In this case, + // it's best to skip this tick altogether (we may be shooting for a + // non-existent time like the 2AM that's skipped) and go to the next + // one. + if (new Date(t + spacing).getTimezoneOffset() != start_offset_min) { + t += spacing; + d = new Date(t); + start_offset_min = d.getTimezoneOffset(); + } } ticks.push({ v:t,