我正在尝试从字符串20170901000000
中提取日期。 new Date(string)
返回Invalid Date
。日期字符串对我来说看起来很简单,但显然javascript不接受。
javascript new Date()
方法采用什么格式?是否有采用更多日期字符串格式的软件包?
编辑:格式来自随机用户。 YYYYMMDDhhmmss
仅是一个示例。该程序包必须能够自行确定其格式并对其进行解析。
答案 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