解析日期" 01/01/2016周五"

时间:2017-03-02 01:17:33

标签: javascript date

我正在尝试用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导入实用程序,其中日期可能采用不同的格式。我很惊讶上面的实用功能没有用。

2 个答案:

答案 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。该网站有点过时,但信息很好。它有不同日期格式的大量不同的正则表达式。