Javascript 如何将没有分隔符的字符串转换为日期?
我想把20170603转换成日期。我想使用函数new Date(2017,06,03),但如何从日期中提取数字?我试着用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
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 Year0999
:-)是的,它不太可能失败,但这不是不应用最佳实践的理由,它是一个数字或字符串?根本不需要转换为数字,当传递两个或多个参数时,要做的第一件事就是运行每个值的编号。另外,startDate.substr(5,6)-1无论如何都会生成一个数字,因此该值已经是一个数字了。自ECMAScript ed 5以来,基数为10的基数就不再是必需的了。