在 NodeJS 中,我正在读取并解析一个超过 150 万行的 .txt 文件。每行的格式为:日期,数字,数字
,其中每个日期为yyyyMMddhhmmss
。示例行是:
20170506014255,100.01,200.02
使用jFile ,我可以在大约 2 秒内读取并解析所有 1.5M+ 行...
var jFile = require('jfile');
var data = [];
var dataFile = new jFile('./dataFile.txt');
dataFile.lines.forEach(function(line) {
data.push(line.split(','));
});
效果很好!但是,我想将日期格式更改为其他格式。为此,我使用 date-format进行转换...
... same as previous, with new line within forEach() ...
var dateFormatter = require('date-format');
dataFile.lines.forEach(function(line) {
let tdata = line.split(',');
tdata[0] = dateFormatter('MM/dd/yy hh:mm:ss', dateFormatter.parse('yyyyMMddhhmmss', tdata[0]));
data.push(tdata);
});
再说一次,这太棒了!大多。 以前只需要 2 秒的事情现在只需大约 25 秒。喘口气!
理想情况下,文件只需以正确的方式格式化日期,但这不是我能控制的。
是否有更快的方法来进行此转换?也许有更原生的方法,或者只是更快的包?
感谢您的见解!
最佳答案
我想对解析进行硬编码会更快:
function fixFormat(date) {
const yy = date.slice(2, 4);
const MM = date.slice(4, 6);
const dd = date.slice(6, 8);
const hh = date.slice(8, 10);
const mm = date.slice(10, 12);
const ss = date.slice(12, 14);
return `${MM}/${dd}/${yy} ${hh}:${mm}:${ss}`;
}
或者真的很丑:
const y = 2, M = 4, d = 6, h = 8, m = 10, s = 12;
const pattern = fn => date => fn(p => date[p] + date[p + 1])
const fixFormat = pattern(p => p(M) + "/" + p(d) + "/" + p(y) + " " + p(h) + ":" + p(m) + ":" + p(s));
关于javascript - NodeJS (JavaScript) - 转换日期最快的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53982415/