Parse week-of-year with implicit day-of-week.
If %W is specified, assume Monday; if %U is specified, assume Sunday. Fixes #1914.
This commit is contained in:
Родитель
d05692b4c7
Коммит
e9472ba1da
|
@ -2539,7 +2539,8 @@
|
|||
if (i != string.length) return null;
|
||||
if ("p" in d) d.H = d.H % 12 + d.p * 12;
|
||||
var localZ = d.Z != null && d3_date !== d3_date_utc, date = new (localZ ? d3_date_utc : d3_date)();
|
||||
if ("j" in d) date.setFullYear(d.y, 0, d.j); else if ("w" in d && ("W" in d || "U" in d)) {
|
||||
if ("j" in d) date.setFullYear(d.y, 0, d.j); else if ("W" in d || "U" in d) {
|
||||
if (!("w" in d)) d.w = "W" in d ? 1 : 0;
|
||||
date.setFullYear(d.y, 0, 1);
|
||||
date.setFullYear(d.y, 0, "W" in d ? (d.w + 6) % 7 + d.W * 7 - (date.getDay() + 5) % 7 : d.w + d.U * 7 - (date.getDay() + 6) % 7);
|
||||
} else date.setFullYear(d.y, d.m, d.d);
|
||||
|
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -54,7 +54,8 @@ function d3_locale_timeFormat(locale) {
|
|||
|
||||
// Set year, month, date.
|
||||
if ("j" in d) date.setFullYear(d.y, 0, d.j);
|
||||
else if ("w" in d && ("W" in d || "U" in d)) {
|
||||
else if ("W" in d || "U" in d) {
|
||||
if (!("w" in d)) d.w = "W" in d ? 1 : 0;
|
||||
date.setFullYear(d.y, 0, 1);
|
||||
date.setFullYear(d.y, 0, "W" in d
|
||||
? (d.w + 6) % 7 + d.W * 7 - (date.getDay() + 5) % 7
|
||||
|
|
|
@ -222,6 +222,12 @@ suite.addBatch({
|
|||
assert.deepEqual(p("Sun 01 1995"), local(1995, 0, 1));
|
||||
assert.isNull(p("XXX 03 2010"));
|
||||
},
|
||||
"assumes Sunday when parsing week number (Sunday) with no weekday": function(format) {
|
||||
var p = format("%U %Y").parse;
|
||||
assert.deepEqual(p("00 1990"), local(1989, 11, 31));
|
||||
assert.deepEqual(p("05 1991"), local(1991, 1, 3));
|
||||
assert.deepEqual(p("01 1995"), local(1995, 0, 1));
|
||||
},
|
||||
"parses weekday, week number (Sunday) and year": function(format) {
|
||||
var p = format("%A %U %Y").parse;
|
||||
assert.deepEqual(p("Monday 00 1990"), local(1990, 0, 1));
|
||||
|
@ -256,6 +262,12 @@ suite.addBatch({
|
|||
assert.deepEqual(p("0 04 1991"), local(1991, 1, 3));
|
||||
assert.deepEqual(p("0 00 1995"), local(1995, 0, 1));
|
||||
assert.isNull(p("X 03 2010"));
|
||||
},
|
||||
"assumes Monday when parsing week number (Monday) with no weekday": function(format) {
|
||||
var p = format("%W %Y").parse;
|
||||
assert.deepEqual(p("01 1990"), local(1990, 0, 1));
|
||||
assert.deepEqual(p("05 1991"), local(1991, 1, 4));
|
||||
assert.deepEqual(p("01 1995"), local(1995, 0, 2));
|
||||
},
|
||||
"parses numeric date": function(format) {
|
||||
var p = format("%m/%d/%y").parse;
|
||||
|
|
Загрузка…
Ссылка в новой задаче