我使用这3行来将日期从文本重新编码为某种d3格式(之后使用crossfilter& dc.js)。
我使用D3功能来执行此操作,但这3行正在减慢我的javascript
(当数据长度为10k记录时,每个约1000ms)。
我在纯JavaScript或jQuery中寻找更快的替代品 (我希望避免使用其他插件,因为性能受到威胁,但欢迎任何答案)
谢谢!
var formatDate = d3.time.format("%Y-%m-%d"); // ISO 2014-12-16
var inputFormatDate = d3.time.format("%d %b %Y"); // 16 Dec 2014
data.forEach(function (d, i) {
// (...)
d.Released = inputFormatDate.parse(d.Released);
d.DVD = inputFormatDate.parse(d.DVD); // e.g. Tue Dec 16 2014 00:00:00 GMT+0100 (CET)
d.release_date = formatDate.parse(d.release_date);
// (...)
}
答案 0 :(得分:1)
很遗憾,解析相当于每个日期库中的最佳解析。我的建议:如果你知道日期的格式,那么使用String.substr
获取相关属性,然后使用Date构造函数的new Date(year, month[, day[, hour[, minutes[, seconds[, milliseconds]]]]])
格式来构建Date对象。在我的实验中,这应该解析d3.js解析器的大约20%的时间。
答案 1 :(得分:0)
例如,对于默认情况下在golang中使用的RFC3339 (%Y-%m-%dT%H:%M:%SZ)
,您可以使用
function parseDate(d) {
// 2015-05-13T04:01:01Z
return new Date(d.substr(0, 19));
}
替换
var parseDate = d3.time.format("%Y-%m-%dT%H:%M:%SZ").parse;
使用new Date()
的第一个使用显着比d3的功能更快。
以下是JavaScript中原生支持的更多格式: http://www.w3schools.com/js/js_date_formats.asp