您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“js怎么判斷日期天數(shù)”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!
題目:給定5個相同格式的日期,怎么判斷是否是連續(xù)的5天呢?
數(shù)據(jù)如下:
let days = [ '2016-02-28', '2016-02-29', // 閏月 '2016-03-01', // 跨月 '2016-03-02', '2016-03-03',]
看到這個題目,我瞬間想到了另外的一個題目:一個數(shù)組,數(shù)組中有5個數(shù)字,如何判斷這5個數(shù)字是否是連續(xù)的:
let arr = [1,2,3,4,5]
感覺這兩道題目的解法是一樣的,后面這道數(shù)字的相對比較簡單,不用處理時間問題,咱們先來解決后面這道題。
那么思路是什么樣的呢?我們可以假設(shè)arr數(shù)組中5個數(shù)字是連續(xù)的,然后在此基礎(chǔ)之上,我們做一些操作,做什么操作呢?
假如5個數(shù)字是連續(xù)的,那么第一個數(shù)字加4,第二個數(shù)字加3,第三個數(shù)字加2,第四個數(shù)字加1,第五個數(shù)字加0,最終得到:
let newarr = [5,5,5,5,5];
然后判斷每個數(shù)字是否都相等,如果相等那么說明arr是連續(xù)的,反之則是不連續(xù)的。
思路有了,代碼如下:
let arr = [1,2,3,4,5];
let newarr = arr.sort().map((e,i)=>{
return e+4-i
})
let stand = newarr[0];
let isTrue = newarr.every(e=>{
return e===stand
})
console.log(isTrue)
接下來我們看日期是否連續(xù)該如何判斷:
let days = [ '2016-02-28', '2016-02-29', // 閏月 '2016-03-01', // 跨月 '2016-03-02', '2016-03-03',]
觀察上面的日期數(shù)組,我們假定日期是連續(xù)的,然后對每一個日期進行處理,但是該如何處理呢?
上面數(shù)字題目比較直觀,假設(shè)數(shù)字連續(xù),設(shè)置成相同數(shù)字,日期則需要利用js的日期處理API了,我們可以利用Date對象的setDate方法將其設(shè)置成相同的日期。
簡單說就是將2016-02-28、2016-02-29等日期設(shè)置成2016-03-03,我們可以這樣做,代碼如下:
let dt = new Date("2016-02-28");dt.setDate(dt.getDate()+4-1)console.log(dt)
打印結(jié)果:
處理日期的方法有了,將給定數(shù)組中所有日期都處理一下,最終代碼如下:
let days = [
'2016-02-28',
'2016-02-29', // 閏月
'2016-03-01', // 跨月
'2016-03-02',
'2016-03-03',
]
let newdays = days.map((e,i)=>{
let dt = new Date(e);
dt.setDate(dt.getDate() + 4 - i);
//轉(zhuǎn)換成時間戳
return +dt
})
let stand = newdays[0]
let isTrue = newdays.every(e=>{
console.log(e,stand)
return stand ===e
})
console.log(isTrue)
再深入一下,如果給的時間是這樣的呢?
let days = [ '2016-02-28 12:00:00', '2016-02-29 12:00:01', // 閏月 '2016-03-01 12:00:02', // 跨月 '2016-03-02 12:00:03', '2016-03-03 12:00:04', '2016-03-04 12:00:04',]
我們只需要對時間的時、分、秒、毫秒,處理一下即可,代碼如下:
let days = [
'2016-02-28 12:00:00',
'2016-02-29 12:00:01', // 閏月
'2016-03-01 12:00:02', // 跨月
'2016-03-02 12:00:03',
'2016-03-03 12:00:04',
'2016-03-04 12:00:04',
]
let newdays = days.map((e,i)=>{
let dt = new Date(e);
dt.setDate(dt.getDate() + 4 - i);
dt.setHours(0);
dt.setMinutes(0);
dt.setSeconds(0);
dt.setMilliseconds(0);
return +dt
})
let stand = newdays[0]
let isTrue = newdays.every(e=>{
return stand ===e
})
console.log(isTrue)
“js怎么判斷日期天數(shù)”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。