This commit is contained in:
Mike Bostock 2011-06-16 21:12:37 -07:00
Родитель e2119b8ccf 27158fdeb4
Коммит 68424aeff4
26 изменённых файлов: 502 добавлений и 51 удалений

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

@ -37,6 +37,7 @@ d3.core.js: \
src/core/descending.js \
src/core/min.js \
src/core/max.js \
src/core/sum.js \
src/core/zip.js \
src/core/bisect.js \
src/core/nest.js \
@ -146,6 +147,8 @@ d3.time.js: \
src/start.js \
src/time/time.js \
src/time/format.js \
src/time/format-utc.js \
src/time/format-iso.js \
src/end.js
d3.geom.js: \
@ -171,6 +174,7 @@ tests: \
tests/test-keys.test \
tests/test-max.test \
tests/test-min.test \
tests/test-sum.test \
tests/test-nest.test \
tests/test-permute.test \
tests/test-zip.test \
@ -179,7 +183,11 @@ tests: \
tests/test-round.test \
tests/test-hsl.test \
tests/test-time-format.test \
tests/test-time-format-iso.test \
tests/test-time-format-utc.test \
tests/test-time-parse.test \
tests/test-time-parse-iso.test \
tests/test-time-parse-utc.test \
tests/test-transition.test \
tests/test-scale-linear.test \
tests/test-scale-polylinear.test \

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

@ -1,4 +1,4 @@
(function(){d3 = {version: "1.20.3"}; // semver
(function(){d3 = {version: "1.21.0"}; // semver
if (!Date.now) Date.now = function() {
return +new Date;
};
@ -68,6 +68,20 @@ d3.max = function(array, f) {
}
return a;
};
d3.sum = function(array, f) {
var s = 0,
n = array.length,
a,
i = -1;
if (arguments.length === 1) {
while (++i < n) if (!isNaN(a = +array[i])) s += a;
} else {
while (++i < n) if (!isNaN(a = +f.call(array, array[i], i))) s += a;
}
return s;
};
d3.zip = function() {
if (!(n = arguments.length)) return [];
for (var i = -1, m = d3.min(arguments, d3_zipLength), zips = new Array(m); ++i < m;) {

4
d3.min.js поставляемый

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

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

@ -1,4 +1,6 @@
(function(){d3.time = {};
var d3_time = Date;
d3.time.format = function(template) {
var n = template.length;
@ -22,7 +24,7 @@ d3.time.format = function(template) {
}
format.parse = function(string) {
var date = new Date(1900, 0, 1),
var date = new d3_time(1900, 0, 1),
i = d3_time_parse(date, template, string, 0);
if (i != string.length) return null;
if (date.hour12) {
@ -85,7 +87,7 @@ var d3_time_formats = {
W: d3_time_weekNumberMonday,
x: d3.time.format("%m/%d/%y"),
X: d3.time.format("%H:%M:%S"),
y: function(d) { return d3_time_zfill2(d.getYear() % 100); },
y: function(d) { return d3_time_zfill2(d.getFullYear() % 100); },
Y: function(d) { return d3_time_zfill4(d.getFullYear() % 10000); },
Z: d3_time_zone,
"%": function(d) { return "%"; }
@ -288,17 +290,21 @@ var d3_time_amPmLookup = {
pm: 1
};
function d3_time_year(d) {
return new d3_time(d.getFullYear(), 0, 1);
}
function d3_time_dayOfYear(d) {
return d3_time_zfill3(1 + ~~((d - new Date(d.getFullYear(), 0, 1)) / 864e5));
return d3_time_zfill3(1 + ~~((d - d3_time_year(d)) / 864e5));
}
function d3_time_weekNumberSunday(d) {
var d0 = new Date(d.getFullYear(), 0, 1);
var d0 = d3_time_year(d);
return d3_time_zfill2(~~(((d - d0) / 864e5 + d0.getDay()) / 7));
}
function d3_time_weekNumberMonday(d) {
var d0 = new Date(d.getFullYear(), 0, 1);
var d0 = d3_time_year(d);
return d3_time_zfill2(~~(((d - d0) / 864e5 + (d0.getDay() + 6) % 7) / 7));
}
@ -310,4 +316,53 @@ function d3_time_zone(d) {
zm = Math.abs(z) % 60;
return zs + d3_time_zfill2(zh) + d3_time_zfill2(zm);
}
d3.time.format.utc = function(template) {
var local = d3.time.format(template);
function format(date) {
var utc = new d3_time_format_utc();
utc._ = date;
return local(utc);
}
format.parse = function(string) {
try {
d3_time = d3_time_format_utc;
var date = local.parse(string);
return date && date._;
} finally {
d3_time = Date;
}
};
format.toString = local.toString;
return format;
};
function d3_time_format_utc() {
this._ = new Date(Date.UTC.apply(this, arguments));
}
d3_time_format_utc.prototype = {
getDate: function() { return this._.getUTCDate(); },
getDay: function() { return this._.getUTCDay(); },
getFullYear: function() { return this._.getUTCFullYear(); },
getHours: function() { return this._.getUTCHours(); },
getMilliseconds: function() { return this._.getUTCMilliseconds(); },
getMinutes: function() { return this._.getUTCMinutes(); },
getMonth: function() { return this._.getUTCMonth(); },
getSeconds: function() { return this._.getUTCSeconds(); },
getTimezoneOffset: function() { return 0; },
valueOf: function() { return this._.getTime(); },
setDate: function(x) { this._.setUTCDate(x); },
setDay: function(x) { this._.setUTCDay(x); },
setFullYear: function(x) { this._.setUTCFullYear(x); },
setHours: function(x) { this._.setUTCHours(x); },
setMilliseconds: function(x) { this._.setUTCMilliseconds(x); },
setMinutes: function(x) { this._.setUTCMinutes(x); },
setMonth: function(x) { this._.setUTCMonth(x); },
setSeconds: function(x) { this._.setUTCSeconds(x); }
};
d3.time.format.iso = d3.time.format.utc("%Y-%m-%dT%H:%M:%SZ");
})();

2
d3.time.min.js поставляемый

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

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

@ -1,6 +1,6 @@
var w = 960,
h = 500,
mouse = [0, 0],
mouse = [null, null],
fill = d3.scale.linear().domain([0, 1e4]).range(["brown", "steelblue"]);
// Initialise boids.
@ -16,6 +16,8 @@ var vertices = boids.map(function(boid) {
return boid(boids);
});
d3.select(window).on("blur", nullGravity);
var svg = d3.select("#vis")
.append("svg:svg")
.attr("width", w)
@ -25,7 +27,8 @@ var svg = d3.select("#vis")
var m = d3.svg.mouse(this);
mouse[0] = m[0];
mouse[1] = m[1];
});
})
.on("mouseout", nullGravity);
svg.selectAll("path")
.data(d3.geom.voronoi(vertices))
@ -56,3 +59,7 @@ d3.timer(function() {
.attr("d", function(d) { return "M" + d.join("L") + "Z"; })
.style("fill", function(d) { return fill((d3.geom.polygon(d).area())); });
});
function nullGravity() {
mouse[0] = mouse[1] = null;
}

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

@ -1 +1 @@
d3 = {version: "1.20.3"}; // semver
d3 = {version: "1.21.0"}; // semver

14
src/core/sum.js Normal file
Просмотреть файл

@ -0,0 +1,14 @@
d3.sum = function(array, f) {
var s = 0,
n = array.length,
a,
i = -1;
if (arguments.length === 1) {
while (++i < n) if (!isNaN(a = +array[i])) s += a;
} else {
while (++i < n) if (!isNaN(a = +f.call(array, array[i], i))) s += a;
}
return s;
};

1
src/time/format-iso.js Normal file
Просмотреть файл

@ -0,0 +1 @@
d3.time.format.iso = d3.time.format.utc("%Y-%m-%dT%H:%M:%SZ");

48
src/time/format-utc.js Normal file
Просмотреть файл

@ -0,0 +1,48 @@
d3.time.format.utc = function(template) {
var local = d3.time.format(template);
function format(date) {
var utc = new d3_time_format_utc();
utc._ = date;
return local(utc);
}
format.parse = function(string) {
try {
d3_time = d3_time_format_utc;
var date = local.parse(string);
return date && date._;
} finally {
d3_time = Date;
}
};
format.toString = local.toString;
return format;
};
function d3_time_format_utc() {
this._ = new Date(Date.UTC.apply(this, arguments));
}
d3_time_format_utc.prototype = {
getDate: function() { return this._.getUTCDate(); },
getDay: function() { return this._.getUTCDay(); },
getFullYear: function() { return this._.getUTCFullYear(); },
getHours: function() { return this._.getUTCHours(); },
getMilliseconds: function() { return this._.getUTCMilliseconds(); },
getMinutes: function() { return this._.getUTCMinutes(); },
getMonth: function() { return this._.getUTCMonth(); },
getSeconds: function() { return this._.getUTCSeconds(); },
getTimezoneOffset: function() { return 0; },
valueOf: function() { return this._.getTime(); },
setDate: function(x) { this._.setUTCDate(x); },
setDay: function(x) { this._.setUTCDay(x); },
setFullYear: function(x) { this._.setUTCFullYear(x); },
setHours: function(x) { this._.setUTCHours(x); },
setMilliseconds: function(x) { this._.setUTCMilliseconds(x); },
setMinutes: function(x) { this._.setUTCMinutes(x); },
setMonth: function(x) { this._.setUTCMonth(x); },
setSeconds: function(x) { this._.setUTCSeconds(x); }
};

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

@ -21,7 +21,7 @@ d3.time.format = function(template) {
}
format.parse = function(string) {
var date = new Date(1900, 0, 1),
var date = new d3_time(1900, 0, 1),
i = d3_time_parse(date, template, string, 0);
if (i != string.length) return null;
if (date.hour12) {
@ -84,7 +84,7 @@ var d3_time_formats = {
W: d3_time_weekNumberMonday,
x: d3.time.format("%m/%d/%y"),
X: d3.time.format("%H:%M:%S"),
y: function(d) { return d3_time_zfill2(d.getYear() % 100); },
y: function(d) { return d3_time_zfill2(d.getFullYear() % 100); },
Y: function(d) { return d3_time_zfill4(d.getFullYear() % 10000); },
Z: d3_time_zone,
"%": function(d) { return "%"; }
@ -287,17 +287,21 @@ var d3_time_amPmLookup = {
pm: 1
};
function d3_time_year(d) {
return new d3_time(d.getFullYear(), 0, 1);
}
function d3_time_dayOfYear(d) {
return d3_time_zfill3(1 + ~~((d - new Date(d.getFullYear(), 0, 1)) / 864e5));
return d3_time_zfill3(1 + ~~((d - d3_time_year(d)) / 864e5));
}
function d3_time_weekNumberSunday(d) {
var d0 = new Date(d.getFullYear(), 0, 1);
var d0 = d3_time_year(d);
return d3_time_zfill2(~~(((d - d0) / 864e5 + d0.getDay()) / 7));
}
function d3_time_weekNumberMonday(d) {
var d0 = new Date(d.getFullYear(), 0, 1);
var d0 = d3_time_year(d);
return d3_time_zfill2(~~(((d - d0) / 864e5 + (d0.getDay() + 6) % 7) / 7));
}

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

@ -1 +1,3 @@
d3.time = {};
var d3_time = Date;

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

@ -7,34 +7,34 @@ function max(array) {
}
console.log("max:");
console.log(" [1] -> " + max([1]))
console.log(" [1] -> " + max([1]));
console.log(" [5, 1, 2, 3, 4] -> " + max([5, 1, 2, 3, 4]));
console.log(" [\"a\", \"b\", \"c\"] -> " + max(["c", "a", "b"]))
console.log(" [\"20\", \"3\"] -> " + max(["20", "3"]))
console.log(" [\"3\", \"20\"] -> " + max(["3", "20"]))
console.log(" [20, 3] -> " + max([20, 3]))
console.log(" [3, 20] -> " + max([3, 20]))
console.log(" [\"a\", \"b\", \"c\"] -> " + max(["c", "a", "b"]));
console.log(" [\"20\", \"3\"] -> " + max(["20", "3"]));
console.log(" [\"3\", \"20\"] -> " + max(["3", "20"]));
console.log(" [20, 3] -> " + max([20, 3]));
console.log(" [3, 20] -> " + max([3, 20]));
console.log("");
console.log("max of empty array is undefined:");
console.log(" [] -> " + max([]))
console.log(" [null] -> " + max([null]))
console.log(" [undefined] -> " + max([undefined]))
console.log(" [NaN] -> " + max([NaN]))
console.log(" [NaN, NaN] -> " + max([NaN, NaN]))
console.log(" [] -> " + max([]));
console.log(" [null] -> " + max([null]));
console.log(" [undefined] -> " + max([undefined]));
console.log(" [NaN] -> " + max([NaN]));
console.log(" [NaN, NaN] -> " + max([NaN, NaN]));
console.log("");
console.log("max ignores null, undefined, and NaN:");
console.log(" [NaN, 1, 2, 3, 4, 5] -> " + max([NaN, 1, 2, 3, 4, 5]));
console.log(" [1, 2, 3, 4, 5, NaN] -> " + max([1, 2, 3, 4, 5, NaN]));
console.log(" [10, null, 3, undefined, 3, NaN] -> " + max([10, null, 3, undefined, 5, NaN]));
console.log(" [10, null, 3, undefined, 5, NaN] -> " + max([10, null, 3, undefined, 5, NaN]));
console.log("");
console.log("max compares heterogenous types as numbers:");
console.log(" [20, \"3\"] -> " + max([20, "3"]))
console.log(" [\"20\", 3] -> " + max(["20", 3]))
console.log(" [3, \"20\"] -> " + max([3, "20"]))
console.log(" [\"3\", 20] -> " + max(["3", 20]))
console.log(" [20, \"3\"] -> " + max([20, "3"]));
console.log(" [\"20\", 3] -> " + max(["20", 3]));
console.log(" [3, \"20\"] -> " + max([3, "20"]));
console.log(" [\"3\", 20] -> " + max(["3", 20]));
console.log("");
console.log("max applies accessor function:");

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

@ -17,7 +17,7 @@ max of empty array is undefined:
max ignores null, undefined, and NaN:
[NaN, 1, 2, 3, 4, 5] -> 5
[1, 2, 3, 4, 5, NaN] -> 5
[10, null, 3, undefined, 3, NaN] -> 10
[10, null, 3, undefined, 5, NaN] -> 10
max compares heterogenous types as numbers:
[20, "3"] -> 20

32
tests/test-min.js поставляемый
Просмотреть файл

@ -7,34 +7,34 @@ function min(array) {
}
console.log("min:");
console.log(" [1] -> " + min([1]))
console.log(" [1] -> " + min([1]));
console.log(" [5, 1, 2, 3, 4] -> " + min([5, 1, 2, 3, 4]));
console.log(" [\"a\", \"b\", \"c\"] -> " + min(["c", "a", "b"]))
console.log(" [\"20\", \"3\"] -> " + min(["20", "3"]))
console.log(" [\"3\", \"20\"] -> " + min(["3", "20"]))
console.log(" [20, 3] -> " + min([20, 3]))
console.log(" [3, 20] -> " + min([3, 20]))
console.log(" [\"a\", \"b\", \"c\"] -> " + min(["c", "a", "b"]));
console.log(" [\"20\", \"3\"] -> " + min(["20", "3"]));
console.log(" [\"3\", \"20\"] -> " + min(["3", "20"]));
console.log(" [20, 3] -> " + min([20, 3]));
console.log(" [3, 20] -> " + min([3, 20]));
console.log("");
console.log("min of empty array is undefined:");
console.log(" [] -> " + min([]))
console.log(" [null] -> " + min([null]))
console.log(" [undefined] -> " + min([undefined]))
console.log(" [NaN] -> " + min([NaN]))
console.log(" [NaN, NaN] -> " + min([NaN, NaN]))
console.log(" [] -> " + min([]));
console.log(" [null] -> " + min([null]));
console.log(" [undefined] -> " + min([undefined]));
console.log(" [NaN] -> " + min([NaN]));
console.log(" [NaN, NaN] -> " + min([NaN, NaN]));
console.log("");
console.log("min ignores null, undefined, and NaN:");
console.log(" [NaN, 1, 2, 3, 4, 5] -> " + min([NaN, 1, 2, 3, 4, 5]));
console.log(" [1, 2, 3, 4, 5, NaN] -> " + min([1, 2, 3, 4, 5, NaN]));
console.log(" [10, null, 3, undefined, 3, NaN] -> " + min([10, null, 3, undefined, 5, NaN]));
console.log(" [10, null, 3, undefined, 5, NaN] -> " + min([10, null, 3, undefined, 5, NaN]));
console.log("");
console.log("min compares heterogenous types as numbers:");
console.log(" [20, \"3\"] -> " + min([20, "3"]))
console.log(" [\"20\", 3] -> " + min(["20", 3]))
console.log(" [3, \"20\"] -> " + min([3, "20"]))
console.log(" [\"3\", 20] -> " + min(["3", 20]))
console.log(" [20, \"3\"] -> " + min([20, "3"]));
console.log(" [\"20\", 3] -> " + min(["20", 3]));
console.log(" [3, \"20\"] -> " + min([3, "20"]));
console.log(" [\"3\", 20] -> " + min(["3", 20]));
console.log("");
console.log("min applies accessor function:");

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

@ -17,7 +17,7 @@ min of empty array is undefined:
min ignores null, undefined, and NaN:
[NaN, 1, 2, 3, 4, 5] -> 1
[1, 2, 3, 4, 5, NaN] -> 1
[10, null, 3, undefined, 3, NaN] -> 3
[10, null, 3, undefined, 5, NaN] -> 3
min compares heterogenous types as numbers:
[20, "3"] -> "3"

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

@ -0,0 +1,31 @@
require("./../lib/env-js/envjs/node");
require("./../d3");
console.log("sum:");
console.log(" [] -> " + d3.sum([]));
console.log(" [1] -> " + d3.sum([1]));
console.log(" [5, 1, 2, 3, 4] -> " + d3.sum([5, 1, 2, 3, 4]));
console.log(" [\"a\", \"b\", \"c\"] -> " + d3.sum(["c", "a", "b"]));
console.log(" [\"20\", \"3\"] -> " + d3.sum(["20", "3"]));
console.log(" [\"3\", \"20\"] -> " + d3.sum(["3", "20"]));
console.log(" [20, 3] -> " + d3.sum([20, 3]));
console.log(" [3, 20] -> " + d3.sum([3, 20]));
console.log("");
console.log("sum ignores null, undefined, and NaN:");
console.log(" [NaN, 1, 2, 3, 4, 5] -> " + d3.sum([NaN, 1, 2, 3, 4, 5]));
console.log(" [1, 2, 3, 4, 5, NaN] -> " + d3.sum([1, 2, 3, 4, 5, NaN]));
console.log(" [10, null, 3, undefined, 5, NaN] -> " + d3.sum([10, null, 3, undefined, 5, NaN]));
console.log("");
console.log("sum treats heterogenous types as numbers:");
console.log(" [20, \"3\"] -> " + d3.sum([20, "3"]));
console.log(" [\"20\", 3] -> " + d3.sum(["20", 3]));
console.log(" [3, \"20\"] -> " + d3.sum([3, "20"]));
console.log(" [\"3\", 20] -> " + d3.sum(["3", 20]));
console.log("");
console.log("sum applies accessor function:");
console.log(" [1, 2, 3, 4, 5], [2, 4, 6, 8, 10] -> " + d3.sum([[1, 2, 3, 4, 5], [2, 4, 6, 8, 10]], function(d) { return d3.sum(d); }));
console.log(" [1, 2, 3, 4, 5] -> " + d3.sum([1, 2, 3, 4, 5], function(d, i) { return i; }));
console.log("");

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

@ -0,0 +1,25 @@
sum:
[] -> 0
[1] -> 1
[5, 1, 2, 3, 4] -> 15
["a", "b", "c"] -> 0
["20", "3"] -> 23
["3", "20"] -> 23
[20, 3] -> 23
[3, 20] -> 23
sum ignores null, undefined, and NaN:
[NaN, 1, 2, 3, 4, 5] -> 15
[1, 2, 3, 4, 5, NaN] -> 15
[10, null, 3, undefined, 5, NaN] -> 18
sum treats heterogenous types as numbers:
[20, "3"] -> 23
["20", 3] -> 23
[3, "20"] -> 23
["3", 20] -> 23
sum applies accessor function:
[1, 2, 3, 4, 5], [2, 4, 6, 8, 10] -> 45
[1, 2, 3, 4, 5] -> 10

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

@ -0,0 +1,8 @@
require("./../lib/env-js/envjs/node");
require("./../d3");
require("./../d3.time");
console.log("format:");
console.log(" 01/01/1990 00:00:00 ->", d3.time.format.iso(new Date(Date.UTC(1990, 0, 1))));
console.log(" 12/31/2011 23:59:59 ->", d3.time.format.iso(new Date(Date.UTC(2011, 11, 31, 23, 59, 59))));
console.log("");

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

@ -0,0 +1,4 @@
format:
01/01/1990 00:00:00 -> 1990-01-01T00:00:00Z
12/31/2011 23:59:59 -> 2011-12-31T23:59:59Z

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

@ -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(Date.UTC(1990, 0, 1));
console.log("format 01/01/1990 00:00:00:");
formats.forEach(function(f) {
console.log(" " + f + ":", d3.time.format.utc("%" + f)(now));
});
console.log("");
var now = new Date(Date.UTC(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.utc("%" + 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: +0000
%: %
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: +0000
%: %

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

@ -0,0 +1,10 @@
require("./../lib/env-js/envjs/node");
require("./../d3");
require("./../d3.time");
var f = d3.time.format.utc("%c");
console.log("parse:");
console.log(" 1990-01-01T00:00:00Z ->", f(d3.time.format.iso.parse("1990-01-01T00:00:00Z")));
console.log(" 2011-12-31T23:59:59Z ->", f(d3.time.format.iso.parse("2011-12-31T23:59:59Z")));
console.log("");

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

@ -0,0 +1,4 @@
parse:
1990-01-01T00:00:00Z -> Mon Jan 1 00:00:00 1990
2011-12-31T23:59:59Z -> Sat Dec 31 23:59:59 2011

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

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

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

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