["2017-07-10", "2017-07-13", "2017-08-24", "2017-08-31", "2017-09-13", "2017-11-01"]
这是数组格式 ,怎么才能拿到距离当前日期最近的未来日期数组下标?比如现在是9.3号 我应该拿到的是 9.13对应的下标
["2017-07-10", "2017-07-13", "2017-08-24", "2017-08-31", "2017-09-13", "2017-11-01"]
这是数组格式 ,怎么才能拿到距离当前日期最近的未来日期数组下标?比如现在是9.3号 我应该拿到的是 9.13对应的下标
var dateArr = ["2017-07-10", "2017-07-13", "2017-08-24", "2017-08-31", "2017-09-13", "2017-11-01"]
// 方法一
function getIndexOfLatestDate(dateArr) {
var minMs = new Date(dateArr[0]).getTime() - new Date().getTime()
var index = 0
for (let i in dateArr) {
var ms = new Date(dateArr[i]).getTime() - new Date().getTime()
if (ms > 0 && ms < minMs) {
minMs = ms
index = i
}
}
return parseInt(index)
}
// 方法二
function getIndexOfLatestDate2(dateArr) {
var newDateArr = [...dateArr]
var now = new Date()
var todayStr = now.getFullYear().toString()
+ '-'
+ ('0' + (now.getMonth() + 1)).substr(-2)
+ '-'
+ ('0' + now.getDate()).substr(-2)
newDateArr.push(todayStr)
newDateArr.sort()
var latestDate = newDateArr[newDateArr.indexOf(todayStr) + 1]
return dateArr.indexOf(latestDate)
}
getIndexOfLatestDate2(dateArr)
arr.forEach((item, index) => {
//找到你这里要的9.13
//forEach是会遍历到数组结束的,不想浪费这点时间可以直接for循环
return index
})
转出完整的毫秒时间
var dates = ["2017-07-10", "2017-07-13", "2017-08-24", "2017-08-31", "2017-09-13", "2017-11-01"];
for (var x in dates){
if((new Date(dates[x]).getTime())>=(new Date().getTime())){
console.log(x);
break;
}
}
10 回答11.2k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
把值转为时间搓,与当前时间比对,取相差值最小的正值的下标