我正在学习NodeJS并重写一些代码以查看它的比较。对于一个脚本,我试图以字符串的形式获取日期并将它们转换为JavaScript Date对象以执行计算。
我设法通过将字符串转换为数组并处理每个字符来实现此目的。它看起来很难看,我想知道是否有一种更清洁的方式,比如等同于sprintf或其他东西。我确信我能找到一个模块,但我想知道JS中是否存在本地方式。这就是我所拥有的:
var a = '081320141900'.split('');
creationDate = a[0] + a[1] + "/" + a[2] + a[3] + "/" + a[4] + a[5] + a[6] + a[7] + " " + a[8] + a[9] + ":" + a[10] + a[11];
console.log('Creation Date: ' + creationDate);
输出:
Creation Date: 08/13/2014 19:00
同样,上述工作正常,只是想知道这是否可以做得更干净。
答案 0 :(得分:1)
通常,您将使用Date.parse
,但在此处,您无法使用自定义格式。
但是你可以改进一些事情:
使用new Date()
构建日期对象。然后你可以格式化它。
在子字符串上使用parseInt()
(请参阅this answer)(例如a.substr(0, 2)
)。
验证您的输入。
为变量使用更好的名称。 a
不是一个好名字。
答案 1 :(得分:0)
我想我找到了让它看起来更好的方法。
#!/bin/env node
var dateString = '081320141900'.split('');
dateString.splice(2, 0, '/');
dateString.splice(5, 0, '/');
dateString.splice(10, 0, ' ');
dateString.splice(13, 0, ':');
createDate = new Date(dateString.join(''));
console.log(createDate);
输出:
Wed Aug 13 2014 19:00:00 GMT-0500 (CDT)
让我继续进行计算。我将添加一些代码来捕获Date对象是否无法形成等等,但至少这一点更清晰。再次感谢大家的帮助。