我正在尝试用JavaScript解析日期,但特定格式让我适合。我已从信用卡公司导出数据,且日期字段的格式与sudo npm install -g n # install 'n' globally
which n # should be /usr/local/bin/n
sudo n lts # need sudo to switch node versions
node --version # v6.10.0
sudo node --version # v6.10.0
或Date.parse
不兼容。
E.g。
moment().isValid()
我不确定是否应该使用RegEx Date.parse("01/01/2016 Fri") // NaN
moment("01/01/2016 Fri") // false
或.test()
执行某项操作,因为这会用于CSV导入实用程序,其中日期可能采用不同的格式。我很惊讶上面的实用功能没有用。
答案 0 :(得分:1)
查看in the Moment docs以了解如何以任何格式解析日期。第一个参数是日期字符串,第二个参数是格式字符串。字母数字字符被忽略,因此您不必担心斜线与破折号。
{{1}}
答案 1 :(得分:0)
查看Mozilla MDN on Date.parse():
parse()方法采用日期字符串(例如“Dec 25,1995”)和 返回自1970年1月1日00:00:00以来的毫秒数 世界标准时间。此功能对于基于字符串设置日期值很有用 值,例如与setTime()方法和 日期对象。
给定表示时间的字符串,parse()返回时间值。它 接受RFC2822 / IETF日期语法(RFC2822第3.3节),例如 “周一,1995年12月25日格林尼治标准时间13:30:00”。它了解美国大陆 时区缩写,但对于一般用途,使用时区偏移, 例如,“星期一,1995年12月25日13:30:00 +0430”(4小时30分钟 格林威治子午线以东)。
从这看起来,您的问题似乎是您以不正确的格式提供日期:
有 接受RFC2822 / IETF日期语法(RFC2822第3.3节),例如 “星期一,1995年12月25日13:30:00 GMT”。
检查出来:
未被识别为ECMA-262定义的ISO格式的日期字符串中的无效值可能会也可能不会导致NaN,具体取决于所提供的浏览器和值,例如:
// Non-ISO string with invalid date values
new Date('23/25/2014');
TL; DR - 你以一种无法识别的格式传递值,这就是它返回NaN的原因。
为日期的正则表达式试用此来源:Regexlib.com。该网站有点过时,但信息很好。它有不同日期格式的大量不同的正则表达式。