Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将没有分隔符的字符串转换为日期?_Javascript_Date - Fatal编程技术网

Javascript 如何将没有分隔符的字符串转换为日期?

Javascript 如何将没有分隔符的字符串转换为日期?,javascript,date,Javascript,Date,我想把20170603转换成日期。我想使用函数new Date(2017,06,03),但如何从日期中提取数字?我试着用 new Date(parseInt(startDate.substr(0,4)), parseInt(startDate.substr(5,6)) -1, parseInt(startDate.substr(6,8))) 然而,这给了我非常奇怪的值。如何将精确数字提取到日期函数中?函数的第二个参数是要提取的字符串长度 new Date(parseInt(startDat

我想把20170603转换成日期。我想使用函数new Date(2017,06,03),但如何从日期中提取数字?我试着用

 new Date(parseInt(startDate.substr(0,4)), parseInt(startDate.substr(5,6)) -1, parseInt(startDate.substr(6,8))) 

然而,这给了我非常奇怪的值。如何将精确数字提取到日期函数中?

函数的第二个参数是要提取的字符串长度

new Date(parseInt(startDate.substr(0,4)), 
         parseInt(startDate.substr(4,2)) - 1, 
         parseInt(startDate.substr(6,2)));

与一起使用
const date\u str=“20170603”;

日志(新日期(日期替换(/(\d{4})(\d{2})(\d{2}/,“$1/$2/$3”))按字符计数进行切片:

new Date(my_str.match(/(....)(..)(..)/).slice(1,4).join('/'))

如果使用外部库不是问题。我建议使用

有许多方法可用。为了你的案子

var d = new moment("20170603 ", "YYYYMMDD").toDate();

我使用这个库来解决很多挑战。

您想使用
slice
而不是
substr
。最好通过
10
作为
parseInt
@Bergi的基础,因为我想建议
*1
而不是
parseInt()
,因为基础转换问题,我无法想象会出现这样的情况(对于法定日期而言)失败。你能吗?@Phrogz Year
0999
:-)是的,它不太可能失败,但这不是不应用最佳实践的理由,它是一个数字或字符串?根本不需要转换为数字,当传递两个或多个参数时,要做的第一件事就是运行每个值的编号。另外,
startDate.substr(5,6)-1无论如何都会生成一个数字,因此该值已经是一个数字了。自ECMAScript ed 5以来,基数为10的基数就不再是必需的了。