javascript - NodeJS (JavaScript) - 转换日期最快的方法?

标签 javascript node.js date date-formatting

在 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/

相关文章:

javascript - 避免重复的代码并提取此功能

javascript - 使用javascript将MySql时间戳转换为月/年的最简单方法

javascript - 顶部栏正文位置太低的 html

linux - 在 Linux 上运行 node.js 时如何解决 "Server terminated early with status 127"?

node.js - 为每个 findall Sequelize findall 是可能的吗?

javascript - "Couldn' t 读取依赖项“npm 错误

javascript - 使用javascript从输入开始循环到结束日期

java - 向 vector 添加重复日期

javascript - 滚动应该出现在具有固定表头的整个表中

javascript - 在 li 悬停时更改背景图像;当我得到 li 时如何更改回来?