JavaScript无效的日期字符串

时间:2019-05-03 16:55:02

标签: javascript date

我正在尝试从字符串20170901000000中提取日期。 new Date(string)返回Invalid Date。日期字符串对我来说看起来很简单,但显然javascript不接受。

javascript new Date()方法采用什么格式?是否有采用更多日期字符串格式的软件包?

编辑:格式来自随机用户。 YYYYMMDDhhmmss仅是一个示例。该程序包必须能够自行确定其格式并对其进行解析。

5 个答案:

答案 0 :(得分:1)

使用诸如Moment.js之类的属性库:

const date = moment("20170901000000", "YYYYMMDDhhmmss");
console.log(date);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>

答案 1 :(得分:1)

您必须解析日期字符串:

parseDateString = dateStr =>
  dateStr.replace(
    /^([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})$/,
    '$1-$2-$3 $4:$5:$6'
  );

console.log(new Date(parseDateString('20170901000000')));

希望这会有所帮助,

答案 2 :(得分:1)

您可以拆分该字符串并使用它。.

new Date (YYYY,MM,DD,HH,MM,SS)

/* from mdn */
new Date(year, monthIndex [, day [, hours [, minutes [, seconds [, milliseconds]]]]])

答案 3 :(得分:0)

使用传递给日期函数的数字时,其格式必须为unix时间戳。

  

新日期(值):Unix时间戳,它是一个整数值,表示自1970年1月1日UTC 00:00:00以来的毫秒数,忽略了leap秒(Unix时期) ;但是请注意,大多数Unix时间戳记功能都以秒为单位)。

否则,您需要生成一个有效的time string

  

新的Date(dateString):表示日期的字符串值。该字符串应采用Date.parse()方法可以识别的格式

由于您的格式是YYYYMMDDHHMMSS而不是unix时间戳,我们可以使用后一种dateString方法并使用regex创建有效的字符串日期:

let format = '20170901000000'
  .replace(/^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})$/, '$1-$2-$3 $4:$5:$6')

console.log('format:', format)
console.log('date:', new Date(format))

答案 4 :(得分:0)

另请参见[Javascript Date.parse文档] [1]

示例

new Date('2017-09-01 00:00:00');
new Date('Sept 01, 2017 00:00:00');

对于更多库,您可以使用Moment.js或Day.js