Skip to content

Commit 00d7183

Browse files
committed
Fix d3#1839 - sign of parsed timezone offset.
1 parent 92c9d9d commit 00d7183

File tree

6 files changed

+11
-9
lines changed

6 files changed

+11
-9
lines changed

d3.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -2675,7 +2675,7 @@
26752675
return n ? (date.y = d3_time_expandYear(+n[0]), i + n[0].length) : -1;
26762676
}
26772677
function d3_time_parseZone(date, string, i) {
2678-
return /^[+-]\d{4}$/.test(string = string.substring(i, i + 5)) ? (date.Z = +string,
2678+
return /^[+-]\d{4}$/.test(string = string.substring(i, i + 5)) ? (date.Z = -string,
26792679
i + 5) : -1;
26802680
}
26812681
function d3_time_expandYear(d) {

d3.min.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/locale/time-format.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,7 @@ function d3_time_parseYear(date, string, i) {
292292

293293
function d3_time_parseZone(date, string, i) {
294294
return /^[+-]\d{4}$/.test(string = string.substring(i, i + 5))
295-
? (date.Z = +string, i + 5)
295+
? (date.Z = -string, i + 5) // sign differs from getTimezoneOffset!
296296
: -1;
297297
}
298298

test/time/format-test.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -328,8 +328,9 @@ suite.addBatch({
328328
"parses timezone offset": function(format) {
329329
var p = format("%m/%d/%Y %Z").parse;
330330
assert.deepEqual(p("01/02/1990 +0000"), local(1990, 0, 1, 16));
331-
assert.deepEqual(p("01/02/1990 +0100"), local(1990, 0, 1, 17));
332-
assert.deepEqual(p("01/02/1990 -0100"), local(1990, 0, 1, 15));
331+
assert.deepEqual(p("01/02/1990 +0100"), local(1990, 0, 1, 15));
332+
assert.deepEqual(p("01/02/1990 -0100"), local(1990, 0, 1, 17));
333+
assert.deepEqual(p("01/02/1990 -0800"), local(1990, 0, 2, 0));
333334
},
334335
"ignores optional padding modifier, skipping zeroes and spaces": function(format) {
335336
var p = format("%-m/%0d/%_Y").parse;

test/time/format-utc-test.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -215,8 +215,9 @@ suite.addBatch({
215215
"parses timezone offset": function(format) {
216216
var p = format("%m/%d/%Y %Z").parse;
217217
assert.deepEqual(p("01/02/1990 +0000"), utc(1990, 0, 2));
218-
assert.deepEqual(p("01/02/1990 +0100"), utc(1990, 0, 2, 1));
219-
assert.deepEqual(p("01/02/1990 -0100"), utc(1990, 0, 1, 23));
218+
assert.deepEqual(p("01/02/1990 +0100"), utc(1990, 0, 1, 23));
219+
assert.deepEqual(p("01/02/1990 -0100"), utc(1990, 0, 2, 1));
220+
assert.deepEqual(p("01/02/1990 -0800"), time.local(1990, 0, 2));
220221
}
221222
}
222223
}

test/time/time.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
var offset = 0;
22

33
exports.local = function(year, month, day, hours, minutes, seconds, milliseconds) {
4-
var date = new Date();
4+
var date = new Date;
55
date.setFullYear(year, month, day);
66
date.setHours(hours || 0, offset + (minutes || 0), seconds || 0, milliseconds || 0);
77
return date;
88
};
99

1010
exports.utc = function(year, month, day, hours, minutes, seconds, milliseconds) {
11-
var date = new Date();
11+
var date = new Date;
1212
date.setUTCFullYear(year, month, day);
1313
date.setUTCHours(hours || 0, minutes || 0, seconds || 0, milliseconds || 0);
1414
return date;

0 commit comments

Comments
 (0)