Fix a couple bugs in d3.time.format.

First, we were using the wrong space-filling format for %d and equivalent.
Second, we weren't parsing numbers with optional leading spaces correctly.
Yay tests!
This commit is contained in:
Mike Bostock 2011-03-12 17:00:55 -08:00
Родитель aad495add3
Коммит ff9da42269
11 изменённых файлов: 258 добавлений и 46 удалений

Просмотреть файл

@ -140,6 +140,8 @@ tests: \
tests/test-attr.test \ tests/test-attr.test \
tests/test-call.test \ tests/test-call.test \
tests/test-format.test \ tests/test-format.test \
tests/test-time-format.test \
tests/test-time-parse.test \
tests/test-transition.test \ tests/test-transition.test \
tests/test-scale-linear.test \ tests/test-scale-linear.test \
tests/test-scale-sqrt.test \ tests/test-scale-sqrt.test \
@ -156,7 +158,7 @@ d3.js d3%.js: Makefile
cat $(filter %.js,$^) > $@ cat $(filter %.js,$^) > $@
@chmod a-w $@ @chmod a-w $@
%.test: %.js %.out d3.js %.test: %.js %.out all
@/bin/echo -n "test: $* " @/bin/echo -n "test: $* "
@node $< > $*.actual @node $< > $*.actual
@diff -U 3 $*.out $*.actual && rm -f $*.actual \ @diff -U 3 $*.out $*.actual && rm -f $*.actual \

Просмотреть файл

@ -63,7 +63,7 @@ function d3_time_parse(date, template, string, j) {
var d3_time_zfill2 = d3.format("02d"), var d3_time_zfill2 = d3.format("02d"),
d3_time_zfill3 = d3.format("03d"), d3_time_zfill3 = d3.format("03d"),
d3_time_zfill4 = d3.format("04d"), d3_time_zfill4 = d3.format("04d"),
d3_time_sfill2 = d3.format(" 2d"); d3_time_sfill2 = d3.format("2d");
var d3_time_formats = { var d3_time_formats = {
a: function(d) { return d3_time_weekdays[d.getDay()].substring(0, 3); }, a: function(d) { return d3_time_weekdays[d.getDay()].substring(0, 3); },
@ -223,14 +223,14 @@ function d3_time_parseLocaleTime(date, string, i) {
} }
function d3_time_parseFullYear(date, string, i) { function d3_time_parseFullYear(date, string, i) {
d3_time_number4Re.lastIndex = 0; d3_time_numberRe.lastIndex = 0;
var n = d3_time_number4Re.exec(string.substring(i, i + 4)); var n = d3_time_numberRe.exec(string.substring(i, i + 4));
return n ? (date.setFullYear(n[0]), i += n[0].length) : -1; return n ? (date.setFullYear(n[0]), i += n[0].length) : -1;
} }
function d3_time_parseYear(date, string, i) { function d3_time_parseYear(date, string, i) {
d3_time_number2Re.lastIndex = 0; d3_time_numberRe.lastIndex = 0;
var n = d3_time_number2Re.exec(string.substring(i, i + 2)); var n = d3_time_numberRe.exec(string.substring(i, i + 2));
return n ? (date.setFullYear(d3_time_century() + +n[0]), i += n[0].length) : -1; return n ? (date.setFullYear(d3_time_century() + +n[0]), i += n[0].length) : -1;
} }
@ -239,21 +239,21 @@ function d3_time_century() {
} }
function d3_time_parseMonthNumber(date, string, i) { function d3_time_parseMonthNumber(date, string, i) {
d3_time_number2Re.lastIndex = 0; d3_time_numberRe.lastIndex = 0;
var n = d3_time_number2Re.exec(string.substring(i, i + 2)); var n = d3_time_numberRe.exec(string.substring(i, i + 2));
return n ? (date.setMonth(n[0] - 1), i += n[0].length) : -1; return n ? (date.setMonth(n[0] - 1), i += n[0].length) : -1;
} }
function d3_time_parseDay(date, string, i) { function d3_time_parseDay(date, string, i) {
d3_time_number2Re.lastIndex = 0; d3_time_numberRe.lastIndex = 0;
var n = d3_time_number2Re.exec(string.substring(i, i + 2)); var n = d3_time_numberRe.exec(string.substring(i, i + 2));
return n ? (date.setDate(+n[0]), i += n[0].length) : -1; return n ? (date.setDate(+n[0]), i += n[0].length) : -1;
} }
// Note: we don't validate that the hour is in the range [0,23]. // Note: we don't validate that the hour is in the range [0,23].
function d3_time_parseHour24(date, string, i) { function d3_time_parseHour24(date, string, i) {
d3_time_number2Re.lastIndex = 0; d3_time_numberRe.lastIndex = 0;
var n = d3_time_number2Re.exec(string.substring(i, i + 2)); var n = d3_time_numberRe.exec(string.substring(i, i + 2));
return n ? (date.setHours(+n[0]), i += n[0].length) : -1; return n ? (date.setHours(+n[0]), i += n[0].length) : -1;
} }
@ -264,20 +264,19 @@ function d3_time_parseHour12(date, string, i) {
} }
function d3_time_parseMinutes(date, string, i) { function d3_time_parseMinutes(date, string, i) {
d3_time_number2Re.lastIndex = 0; d3_time_numberRe.lastIndex = 0;
var n = d3_time_number2Re.exec(string.substring(i, i + 2)); var n = d3_time_numberRe.exec(string.substring(i, i + 2));
return n ? (date.setMinutes(+n[0]), i += n[0].length) : -1; return n ? (date.setMinutes(+n[0]), i += n[0].length) : -1;
} }
function d3_time_parseSeconds(date, string, i) { function d3_time_parseSeconds(date, string, i) {
d3_time_number2Re.lastIndex = 0; d3_time_numberRe.lastIndex = 0;
var n = d3_time_number2Re.exec(string.substring(i, i + 2)); var n = d3_time_numberRe.exec(string.substring(i, i + 2));
return n ? (date.setSeconds(+n[0]), i += n[0].length) : -1; return n ? (date.setSeconds(+n[0]), i += n[0].length) : -1;
} }
// Note: we don't look at the next directive. // Note: we don't look at the next directive.
var d3_time_number2Re = /[\s\d]{1,2}/, var d3_time_numberRe = /\s*\d+/;
d3_time_number4Re = /[\s\d]{1,4}/;
function d3_time_parseAmPm(date, string, i) { function d3_time_parseAmPm(date, string, i) {
var n = d3_time_amPmLookup[string.substring(i, i += 2).toLowerCase()]; var n = d3_time_amPmLookup[string.substring(i, i += 2).toLowerCase()];

16
d3.time.min.js поставляемый
Просмотреть файл

@ -1,8 +1,8 @@
(function(){function j(a,b,c,e){for(var d,h=0,i=b.length,k=c.length;h<i;){if(e>=k)return-1;d=b.charCodeAt(h++);if(d==37){d=u[b.charAt(h++)];if(!d||(e=d(a,c,e))<0)return-1}else if(d!=c.charCodeAt(e++))return-1}return e}function m(a,b,c){f.lastIndex=0;return(b=f.exec(b.substring(c,c+2)))?(a.setDate(+b[0]),c+b[0].length):-1}function n(a,b,c){f.lastIndex=0;return(b=f.exec(b.substring(c,c+2)))?(a.setHours(+b[0]),c+b[0].length):-1}d3.time={};d3.time.format=function(a){function b(e){for(var d=[],h=-1,i= (function(){function j(a,b,c,f){for(var d,h=0,i=b.length,k=c.length;h<i;){if(f>=k)return-1;d=b.charCodeAt(h++);if(d==37){d=t[b.charAt(h++)];if(!d||(f=d(a,c,f))<0)return-1}else if(d!=c.charCodeAt(f++))return-1}return f}function m(a,b,c){e.lastIndex=0;return(b=e.exec(b.substring(c,c+2)))?(a.setDate(+b[0]),c+b[0].length):-1}function n(a,b,c){e.lastIndex=0;return(b=e.exec(b.substring(c,c+2)))?(a.setHours(+b[0]),c+b[0].length):-1}d3.time={};d3.time.format=function(a){function b(f){for(var d=[],h=-1,i=
0,k,o;++h<c;)if(a.charCodeAt(h)==37){d.push(a.substring(i,h),(o=l[k=a.charAt(++h)])?o(e):k);i=h+1}d.push(a.substring(i,h));return d.join("")}var c=a.length;b.parse=function(e){var d=new Date(1900,0,1);if(j(d,a,e,0)!=e.length)return null;if(d.hour12){e=d.getHours()%12;d.setHours(d.hour12pm?e+12:e)}delete d.hour12;delete d.hour12pm;return d};b.toString=function(){return a};return b};var g=d3.format("02d"),v=d3.format("03d"),w=d3.format("04d"),x=d3.format(" 2d"),l={a:function(a){return p[a.getDay()].substring(0, 0,k,o;++h<c;)if(a.charCodeAt(h)==37){d.push(a.substring(i,h),(o=l[k=a.charAt(++h)])?o(f):k);i=h+1}d.push(a.substring(i,h));return d.join("")}var c=a.length;b.parse=function(f){var d=new Date(1900,0,1);if(j(d,a,f,0)!=f.length)return null;if(d.hour12){f=d.getHours()%12;d.setHours(d.hour12pm?f+12:f)}delete d.hour12;delete d.hour12pm;return d};b.toString=function(){return a};return b};var g=d3.format("02d"),u=d3.format("03d"),v=d3.format("04d"),w=d3.format("2d"),l={a:function(a){return p[a.getDay()].substring(0,
3)},A:function(a){return p[a.getDay()]},b:function(a){return q[a.getMonth()].substring(0,3)},B:function(a){return q[a.getMonth()]},c:d3.time.format("%a %b %e %H:%M:%S %Y"),d:function(a){return g(a.getDate())},e:function(a){return x(a.getDate())},H:function(a){return g(a.getHours())},I:function(a){return g(a.getHours()%12||12)},j:function(a){return v(1+~~((a-new Date(a.getFullYear(),0,1))/864E5))},m:function(a){return g(a.getMonth()+1)},M:function(a){return g(a.getMinutes())},p:function(a){return a.getHours()>= 3)},A:function(a){return p[a.getDay()]},b:function(a){return q[a.getMonth()].substring(0,3)},B:function(a){return q[a.getMonth()]},c:d3.time.format("%a %b %e %H:%M:%S %Y"),d:function(a){return g(a.getDate())},e:function(a){return w(a.getDate())},H:function(a){return g(a.getHours())},I:function(a){return g(a.getHours()%12||12)},j:function(a){return u(1+~~((a-new Date(a.getFullYear(),0,1))/864E5))},m:function(a){return g(a.getMonth()+1)},M:function(a){return g(a.getMinutes())},p:function(a){return a.getHours()>=
12?"PM":"AM"},S:function(a){return g(a.getSeconds())},U:function(a){var b=new Date(a.getFullYear(),0,1);return g(~~(((a-b)/864E5+b.getDay())/7))},w:function(a){return a.getDay()},W:function(a){var b=new Date(a.getFullYear(),0,1);return g(~~(((a-b)/864E5+(b.getDay()+6)%7)/7))},x:d3.time.format("%m/%d/%y"),X:d3.time.format("%H:%M:%S"),y:function(a){return g(a.getYear()%100)},Y:function(a){return w(a.getFullYear()%1E4)},Z:function(a){a=a.getTimezoneOffset();var b=Math.abs(a)%60;return(a>0?"-":"+")+g(~~(Math.abs(a)/ 12?"PM":"AM"},S:function(a){return g(a.getSeconds())},U:function(a){var b=new Date(a.getFullYear(),0,1);return g(~~(((a-b)/864E5+b.getDay())/7))},w:function(a){return a.getDay()},W:function(a){var b=new Date(a.getFullYear(),0,1);return g(~~(((a-b)/864E5+(b.getDay()+6)%7)/7))},x:d3.time.format("%m/%d/%y"),X:d3.time.format("%H:%M:%S"),y:function(a){return g(a.getYear()%100)},Y:function(a){return v(a.getFullYear()%1E4)},Z:function(a){a=a.getTimezoneOffset();var b=Math.abs(a)%60;return(a>0?"-":"+")+g(~~(Math.abs(a)/
60))+g(b)},"%":function(){return"%"}},u={a:function(a,b,c){return b.substring(c,c+=3).toLowerCase()in y?c:-1},A:function(a,b,c){r.lastIndex=0;return(a=r.exec(b.substring(c,c+10)))?c+a[0].length:-1},b:function(a,b,c){b=z[b.substring(c,c+=3).toLowerCase()];return b==null?-1:(a.setMonth(b),c)},B:function(a,b,c){s.lastIndex=0;return(b=s.exec(b.substring(c,c+12)))?(a.setMonth(A[b[0].toLowerCase()]),c+b[0].length):-1},c:function(a,b,c){return j(a,l.c.toString(),b,c)},d:m,e:m,H:n,I:function(a,b,c){a.hour12= 60))+g(b)},"%":function(){return"%"}},t={a:function(a,b,c){return b.substring(c,c+=3).toLowerCase()in x?c:-1},A:function(a,b,c){r.lastIndex=0;return(a=r.exec(b.substring(c,c+10)))?c+a[0].length:-1},b:function(a,b,c){b=y[b.substring(c,c+=3).toLowerCase()];return b==null?-1:(a.setMonth(b),c)},B:function(a,b,c){s.lastIndex=0;return(b=s.exec(b.substring(c,c+12)))?(a.setMonth(z[b[0].toLowerCase()]),c+b[0].length):-1},c:function(a,b,c){return j(a,l.c.toString(),b,c)},d:m,e:m,H:n,I:function(a,b,c){a.hour12=
true;return n(a,b,c)},m:function(a,b,c){f.lastIndex=0;return(b=f.exec(b.substring(c,c+2)))?(a.setMonth(b[0]-1),c+b[0].length):-1},M:function(a,b,c){f.lastIndex=0;return(b=f.exec(b.substring(c,c+2)))?(a.setMinutes(+b[0]),c+b[0].length):-1},p:function(a,b,c){b=B[b.substring(c,c+=2).toLowerCase()];return b==null?-1:(a.hour12pm=b,c)},S:function(a,b,c){f.lastIndex=0;return(b=f.exec(b.substring(c,c+2)))?(a.setSeconds(+b[0]),c+b[0].length):-1},x:function(a,b,c){return j(a,l.x.toString(),b,c)},X:function(a, true;return n(a,b,c)},m:function(a,b,c){e.lastIndex=0;return(b=e.exec(b.substring(c,c+2)))?(a.setMonth(b[0]-1),c+b[0].length):-1},M:function(a,b,c){e.lastIndex=0;return(b=e.exec(b.substring(c,c+2)))?(a.setMinutes(+b[0]),c+b[0].length):-1},p:function(a,b,c){b=A[b.substring(c,c+=2).toLowerCase()];return b==null?-1:(a.hour12pm=b,c)},S:function(a,b,c){e.lastIndex=0;return(b=e.exec(b.substring(c,c+2)))?(a.setSeconds(+b[0]),c+b[0].length):-1},x:function(a,b,c){return j(a,l.x.toString(),b,c)},X:function(a,
b,c){return j(a,l.X.toString(),b,c)},y:function(a,b,c){f.lastIndex=0;return(b=f.exec(b.substring(c,c+2)))?(a.setFullYear(~~((new Date).getFullYear()/1E3)*1E3+ +b[0]),c+b[0].length):-1},Y:function(a,b,c){t.lastIndex=0;return(b=t.exec(b.substring(c,c+4)))?(a.setFullYear(b[0]),c+b[0].length):-1}},y={sun:3,mon:3,tue:3,wed:3,thu:3,fri:3,sat:3},r=/^(?:Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday)/ig,p=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],z={jan:0,feb:1,mar:2, b,c){return j(a,l.X.toString(),b,c)},y:function(a,b,c){e.lastIndex=0;return(b=e.exec(b.substring(c,c+2)))?(a.setFullYear(~~((new Date).getFullYear()/1E3)*1E3+ +b[0]),c+b[0].length):-1},Y:function(a,b,c){e.lastIndex=0;return(b=e.exec(b.substring(c,c+4)))?(a.setFullYear(b[0]),c+b[0].length):-1}},x={sun:3,mon:3,tue:3,wed:3,thu:3,fri:3,sat:3},r=/^(?:Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday)/ig,p=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],y={jan:0,feb:1,mar:2,
apr:3,may:4,jun:5,jul:6,aug:7,sep:8,oct:9,nov:10,dec:11},s=/^(?:January|February|March|April|May|June|July|August|September|October|November|December)/ig,A={january:0,february:1,march:2,april:3,may:4,june:5,july:6,august:7,september:8,october:9,november:10,december:11},q=["January","February","March","April","May","June","July","August","September","October","November","December"],f=/[\s\d]{1,2}/,t=/[\s\d]{1,4}/,B={am:0,pm:1}})(); apr:3,may:4,jun:5,jul:6,aug:7,sep:8,oct:9,nov:10,dec:11},s=/^(?:January|February|March|April|May|June|July|August|September|October|November|December)/ig,z={january:0,february:1,march:2,april:3,may:4,june:5,july:6,august:7,september:8,october:9,november:10,december:11},q=["January","February","March","April","May","June","July","August","September","October","November","December"],e=/\s*\d+/,A={am:0,pm:1}})();

Просмотреть файл

@ -62,7 +62,7 @@ function d3_time_parse(date, template, string, j) {
var d3_time_zfill2 = d3.format("02d"), var d3_time_zfill2 = d3.format("02d"),
d3_time_zfill3 = d3.format("03d"), d3_time_zfill3 = d3.format("03d"),
d3_time_zfill4 = d3.format("04d"), d3_time_zfill4 = d3.format("04d"),
d3_time_sfill2 = d3.format(" 2d"); d3_time_sfill2 = d3.format("2d");
var d3_time_formats = { var d3_time_formats = {
a: function(d) { return d3_time_weekdays[d.getDay()].substring(0, 3); }, a: function(d) { return d3_time_weekdays[d.getDay()].substring(0, 3); },
@ -222,14 +222,14 @@ function d3_time_parseLocaleTime(date, string, i) {
} }
function d3_time_parseFullYear(date, string, i) { function d3_time_parseFullYear(date, string, i) {
d3_time_number4Re.lastIndex = 0; d3_time_numberRe.lastIndex = 0;
var n = d3_time_number4Re.exec(string.substring(i, i + 4)); var n = d3_time_numberRe.exec(string.substring(i, i + 4));
return n ? (date.setFullYear(n[0]), i += n[0].length) : -1; return n ? (date.setFullYear(n[0]), i += n[0].length) : -1;
} }
function d3_time_parseYear(date, string, i) { function d3_time_parseYear(date, string, i) {
d3_time_number2Re.lastIndex = 0; d3_time_numberRe.lastIndex = 0;
var n = d3_time_number2Re.exec(string.substring(i, i + 2)); var n = d3_time_numberRe.exec(string.substring(i, i + 2));
return n ? (date.setFullYear(d3_time_century() + +n[0]), i += n[0].length) : -1; return n ? (date.setFullYear(d3_time_century() + +n[0]), i += n[0].length) : -1;
} }
@ -238,21 +238,21 @@ function d3_time_century() {
} }
function d3_time_parseMonthNumber(date, string, i) { function d3_time_parseMonthNumber(date, string, i) {
d3_time_number2Re.lastIndex = 0; d3_time_numberRe.lastIndex = 0;
var n = d3_time_number2Re.exec(string.substring(i, i + 2)); var n = d3_time_numberRe.exec(string.substring(i, i + 2));
return n ? (date.setMonth(n[0] - 1), i += n[0].length) : -1; return n ? (date.setMonth(n[0] - 1), i += n[0].length) : -1;
} }
function d3_time_parseDay(date, string, i) { function d3_time_parseDay(date, string, i) {
d3_time_number2Re.lastIndex = 0; d3_time_numberRe.lastIndex = 0;
var n = d3_time_number2Re.exec(string.substring(i, i + 2)); var n = d3_time_numberRe.exec(string.substring(i, i + 2));
return n ? (date.setDate(+n[0]), i += n[0].length) : -1; return n ? (date.setDate(+n[0]), i += n[0].length) : -1;
} }
// Note: we don't validate that the hour is in the range [0,23]. // Note: we don't validate that the hour is in the range [0,23].
function d3_time_parseHour24(date, string, i) { function d3_time_parseHour24(date, string, i) {
d3_time_number2Re.lastIndex = 0; d3_time_numberRe.lastIndex = 0;
var n = d3_time_number2Re.exec(string.substring(i, i + 2)); var n = d3_time_numberRe.exec(string.substring(i, i + 2));
return n ? (date.setHours(+n[0]), i += n[0].length) : -1; return n ? (date.setHours(+n[0]), i += n[0].length) : -1;
} }
@ -263,20 +263,19 @@ function d3_time_parseHour12(date, string, i) {
} }
function d3_time_parseMinutes(date, string, i) { function d3_time_parseMinutes(date, string, i) {
d3_time_number2Re.lastIndex = 0; d3_time_numberRe.lastIndex = 0;
var n = d3_time_number2Re.exec(string.substring(i, i + 2)); var n = d3_time_numberRe.exec(string.substring(i, i + 2));
return n ? (date.setMinutes(+n[0]), i += n[0].length) : -1; return n ? (date.setMinutes(+n[0]), i += n[0].length) : -1;
} }
function d3_time_parseSeconds(date, string, i) { function d3_time_parseSeconds(date, string, i) {
d3_time_number2Re.lastIndex = 0; d3_time_numberRe.lastIndex = 0;
var n = d3_time_number2Re.exec(string.substring(i, i + 2)); var n = d3_time_numberRe.exec(string.substring(i, i + 2));
return n ? (date.setSeconds(+n[0]), i += n[0].length) : -1; return n ? (date.setSeconds(+n[0]), i += n[0].length) : -1;
} }
// Note: we don't look at the next directive. // Note: we don't look at the next directive.
var d3_time_number2Re = /[\s\d]{1,2}/, var d3_time_numberRe = /\s*\d+/;
d3_time_number4Re = /[\s\d]{1,4}/;
function d3_time_parseAmPm(date, string, i) { function d3_time_parseAmPm(date, string, i) {
var n = d3_time_amPmLookup[string.substring(i, i += 2).toLowerCase()]; var n = d3_time_amPmLookup[string.substring(i, i += 2).toLowerCase()];

Просмотреть файл

@ -1,7 +1,6 @@
require("./../lib/env-js/envjs/node"); require("./../lib/env-js/envjs/node");
require("./../lib/sizzle/sizzle"); require("./../lib/sizzle/sizzle");
require("./../d3"); require("./../d3");
require("./../d3.time");
var f = d3.format(" .3f"); var f = d3.format(" .3f");

Просмотреть файл

@ -1,7 +1,6 @@
require("./../lib/env-js/envjs/node"); require("./../lib/env-js/envjs/node");
require("./../lib/sizzle/sizzle"); require("./../lib/sizzle/sizzle");
require("./../d3"); require("./../d3");
require("./../d3.time");
var f = d3.format(" .3f"); var f = d3.format(" .3f");

Просмотреть файл

@ -1,7 +1,6 @@
require("./../lib/env-js/envjs/node"); require("./../lib/env-js/envjs/node");
require("./../lib/sizzle/sizzle"); require("./../lib/sizzle/sizzle");
require("./../d3"); require("./../d3");
require("./../d3.time");
var f = d3.format(" .3f"); var f = d3.format(" .3f");

22
tests/test-time-format.js Normal file
Просмотреть файл

@ -0,0 +1,22 @@
require("./../lib/env-js/envjs/node");
require("./../d3");
require("./../d3.time");
var formats = [
"a", "A", "b", "B", "c", "d", "e", "H", "I", "j", "m", "M",
"p", "S", "U", "w", "W", "x", "X", "y", "Y", "Z", "%"
];
var now = new Date(1990, 0, 1);
console.log("format 01/01/1990 00:00:00:");
formats.forEach(function(f) {
console.log(" " + f + ":", d3.time.format("%" + f)(now));
});
console.log("");
var now = new Date(2011, 11, 31, 23, 59, 59);
console.log("format 12/31/2011 23:59:59:");
formats.forEach(function(f) {
console.log(" " + f + ":", d3.time.format("%" + f)(now));
});
console.log("");

Просмотреть файл

@ -0,0 +1,50 @@
format 01/01/1990 00:00:00:
a: Mon
A: Monday
b: Jan
B: January
c: Mon Jan 1 00:00:00 1990
d: 01
e: 1
H: 00
I: 12
j: 001
m: 01
M: 00
p: AM
S: 00
U: 00
w: 1
W: 00
x: 01/01/90
X: 00:00:00
y: 90
Y: 1990
Z: -0800
%: %
format 12/31/2011 23:59:59:
a: Sat
A: Saturday
b: Dec
B: December
c: Sat Dec 31 23:59:59 2011
d: 31
e: 31
H: 23
I: 11
j: 365
m: 12
M: 59
p: PM
S: 59
U: 52
w: 6
W: 52
x: 12/31/11
X: 23:59:59
y: 11
Y: 2011
Z: -0800
%: %

79
tests/test-time-parse.js Normal file
Просмотреть файл

@ -0,0 +1,79 @@
require("./../lib/env-js/envjs/node");
require("./../d3");
require("./../d3.time");
var f = d3.time.format("%c");
console.log("parse a m/d/Y:");
console.log(" Sun 01/01/1990:", f(d3.time.format("%a %m/%d/%Y").parse("Sun 01/01/1990")));
console.log(" Wed 01/01/1990:", f(d3.time.format("%a %m/%d/%Y").parse("Wed 01/01/1990")));
console.log(" XXX 01/01/1990:", d3.time.format("%a %m/%d/%Y").parse("XXX 01/01/1990"));
console.log("");
console.log("parse A m/d/Y:");
console.log(" Sunday 01/01/1990:", f(d3.time.format("%A %m/%d/%Y").parse("Sunday 01/01/1990")));
console.log(" Wednesday 01/01/1990:", f(d3.time.format("%A %m/%d/%Y").parse("Wednesday 01/01/1990")));
console.log(" Caturday 01/01/1990:", d3.time.format("%A %m/%d/%Y").parse("Caturday 01/01/1990"));
console.log("");
console.log("parse m/d/y:");
console.log(" 1/1/90:", f(d3.time.format("%m/%d/%y").parse("1/1/90")));
console.log(" 1/1/10:", f(d3.time.format("%m/%d/%y").parse("1/1/10")));
console.log("");
console.log("parse x:");
console.log(" 1/1/90:", f(d3.time.format("%x").parse("1/1/90")));
console.log(" 1/1/10:", f(d3.time.format("%x").parse("1/1/10")));
console.log("");
console.log("parse b d Y:");
console.log(" jan 01, 1990:", f(d3.time.format("%b %d, %Y").parse("jan 01, 1990")));
console.log(" jan 1, 1990:", f(d3.time.format("%b %d, %Y").parse("jan 1, 1990")));
console.log(" 1 Feb., 1990:", f(d3.time.format("%d %b., %Y").parse("1 Feb., 1990")));
console.log(" 01 Feb., 1990:", f(d3.time.format("%d %b., %Y").parse("01 Feb., 1990")));
console.log(" 1 Feb., 1990:", f(d3.time.format("%d %b., %Y").parse(" 1 Feb., 1990")));
console.log(" 1 Feb., 1990:", f(d3.time.format(" %d %b., %Y").parse(" 1 Feb., 1990")));
console.log(" Moy 1 1990:", d3.time.format("%b %d %Y").parse("Moy 1 1990"));
console.log("");
console.log("parse B d Y:");
console.log(" January 01, 1990:", f(d3.time.format("%B %d, %Y").parse("January 01, 1990")));
console.log(" january 1, 1990:", f(d3.time.format("%B %d, %Y").parse("january 1, 1990")));
console.log(" 1 February, 1990:", f(d3.time.format("%d %B, %Y").parse("1 February, 1990")));
console.log(" 01 February, 1990:", f(d3.time.format("%d %B, %Y").parse("01 February, 1990")));
console.log(" 1 February, 1990:", f(d3.time.format("%d %B, %Y").parse(" 1 February, 1990")));
console.log(" 1 February, 1990:", f(d3.time.format(" %d %B, %Y").parse(" 1 February, 1990")));
console.log(" Juin 1 1990:", d3.time.format("%B %d %Y").parse("Join 1 1990"));
console.log("");
console.log("parse c:");
console.log(" Mon Jan 1 00:00:00 1990:", f(d3.time.format("%c").parse("Mon Jan 1 00:00:00 1990")));
console.log(" Sun Jan 1 00:00:00 1990:", f(d3.time.format("%c").parse("Sun Jan 1 00:00:00 1990")));
console.log(" Mon Jan 01 00:00:00 1990:", f(d3.time.format("%c").parse("Mon Jan 01 00:00:00 1990")));
console.log(" Mon Jan 1 00:00:00 1990:", f(d3.time.format("%c").parse("Mon Jan 1 00:00:00 1990")));
console.log(" Mon Jan 1 0:0:0 1990:", f(d3.time.format("%c").parse("Mon Jan 1 0:0:0 1990")));
console.log("");
console.log("parse H M S:");
console.log(" 00:00:00:", f(d3.time.format("%H:%M:%S").parse("00:00:00")));
console.log(" 11:59:59:", f(d3.time.format("%H:%M:%S").parse("11:59:59")));
console.log(" 12:00:00:", f(d3.time.format("%H:%M:%S").parse("12:00:00")));
console.log(" 12:00:01:", f(d3.time.format("%H:%M:%S").parse("12:00:01")));
console.log(" 23:59:59:", f(d3.time.format("%H:%M:%S").parse("23:59:59")));
console.log("");
console.log("parse X:");
console.log(" 00:00:00:", f(d3.time.format("%X").parse("00:00:00")));
console.log(" 11:59:59:", f(d3.time.format("%X").parse("11:59:59")));
console.log(" 12:00:00:", f(d3.time.format("%X").parse("12:00:00")));
console.log(" 12:00:01:", f(d3.time.format("%X").parse("12:00:01")));
console.log(" 23:59:59:", f(d3.time.format("%X").parse("23:59:59")));
console.log("");
console.log("parse I M S p:");
console.log(" 12:00:00 am:", f(d3.time.format("%I:%M:%S %p").parse("12:00:00 am")));
console.log(" 11:59:59 AM:", f(d3.time.format("%I:%M:%S %p").parse("11:59:59 AM")));
console.log(" 12:00:00 pm:", f(d3.time.format("%I:%M:%S %p").parse("12:00:00 pm")));
console.log(" 12:00:01 pm:", f(d3.time.format("%I:%M:%S %p").parse("12:00:01 pm")));
console.log(" 11:59:59 PM:", f(d3.time.format("%I:%M:%S %p").parse("11:59:59 PM")));
console.log("");

64
tests/test-time-parse.out Normal file
Просмотреть файл

@ -0,0 +1,64 @@
parse a m/d/Y:
Sun 01/01/1990: Mon Jan 1 00:00:00 1990
Wed 01/01/1990: Mon Jan 1 00:00:00 1990
XXX 01/01/1990: null
parse A m/d/Y:
Sunday 01/01/1990: Mon Jan 1 00:00:00 1990
Wednesday 01/01/1990: Mon Jan 1 00:00:00 1990
Caturday 01/01/1990: null
parse m/d/y:
1/1/90: Sun Jan 1 00:00:00 2090
1/1/10: Fri Jan 1 00:00:00 2010
parse x:
1/1/90: Sun Jan 1 00:00:00 2090
1/1/10: Fri Jan 1 00:00:00 2010
parse b d Y:
jan 01, 1990: Mon Jan 1 00:00:00 1990
jan 1, 1990: Mon Jan 1 00:00:00 1990
1 Feb., 1990: Thu Feb 1 00:00:00 1990
01 Feb., 1990: Thu Feb 1 00:00:00 1990
1 Feb., 1990: Thu Feb 1 00:00:00 1990
1 Feb., 1990: Thu Feb 1 00:00:00 1990
Moy 1 1990: null
parse B d Y:
January 01, 1990: Mon Jan 1 00:00:00 1990
january 1, 1990: Mon Jan 1 00:00:00 1990
1 February, 1990: Thu Feb 1 00:00:00 1990
01 February, 1990: Thu Feb 1 00:00:00 1990
1 February, 1990: Thu Feb 1 00:00:00 1990
1 February, 1990: Thu Feb 1 00:00:00 1990
Juin 1 1990: null
parse c:
Mon Jan 1 00:00:00 1990: Mon Jan 1 00:00:00 1990
Sun Jan 1 00:00:00 1990: Mon Jan 1 00:00:00 1990
Mon Jan 01 00:00:00 1990: Mon Jan 1 00:00:00 1990
Mon Jan 1 00:00:00 1990: Mon Jan 1 00:00:00 1990
Mon Jan 1 0:0:0 1990: Mon Jan 1 00:00:00 1990
parse H M S:
00:00:00: Mon Jan 1 00:00:00 1900
11:59:59: Mon Jan 1 11:59:59 1900
12:00:00: Mon Jan 1 12:00:00 1900
12:00:01: Mon Jan 1 12:00:01 1900
23:59:59: Mon Jan 1 23:59:59 1900
parse X:
00:00:00: Mon Jan 1 00:00:00 1900
11:59:59: Mon Jan 1 11:59:59 1900
12:00:00: Mon Jan 1 12:00:00 1900
12:00:01: Mon Jan 1 12:00:01 1900
23:59:59: Mon Jan 1 23:59:59 1900
parse I M S p:
12:00:00 am: Mon Jan 1 00:00:00 1900
11:59:59 AM: Mon Jan 1 11:59:59 1900
12:00:00 pm: Mon Jan 1 12:00:00 1900
12:00:01 pm: Mon Jan 1 12:00:01 1900
11:59:59 PM: Mon Jan 1 23:59:59 1900