摘要:?jiǎn)栴}需求給定個(gè)相同格式的日期,怎么判斷是否是連續(xù)天呢我當(dāng)時(shí)第一反應(yīng)后排序,然后前后對(duì)比即可。。而且不僅僅這樣的問(wèn)題,還要跨月,跨年,閏月等問(wèn)題。
這是群里一朋友問(wèn)的問(wèn)題,當(dāng)時(shí)我說(shuō)判斷下 day 是否相鄰即可,后來(lái)細(xì)想,發(fā)現(xiàn)完全不對(duì)。
問(wèn)題需求給定5個(gè)相同格式的日期,怎么判斷是否是連續(xù)5天呢?
我當(dāng)時(shí)第一反應(yīng) getDay() 后排序,然后前后對(duì)比即可。。
但是細(xì)想,完全不對(duì),比如本周一下周二,這樣也會(huì)誤判。
而且不僅僅這樣的問(wèn)題,還要跨月,跨年,閏月等問(wèn)題。
然后就有了下面的代碼。
為了不糾結(jié)這些問(wèn)題,我想到了時(shí)間戳,這貨就可以完全忽略上述問(wèn)題了,只要處理時(shí)間戳,最后比較即可。
然后我給了如下代碼:
let days = [ "2016-02-28", "2016-02-29", // 閏月 "2016-03-01", // 跨月 "2016-03-02", "2016-03-03", ] // 先排序,然后轉(zhuǎn)時(shí)間戳 let _days = days.sort().map((d, i) => { let dt = new Date(d) dt.setDate(dt.getDate() + 4 - i) // 處理為相同日期 return +dt }) // 比較時(shí)間戳是否一致 console.log( _days[0] == _days[1] && _days[0] == _days[2] && _days[0] == _days[3] && _days[0] == _days[4] )
ok 一切問(wèn)題都解決掉了,跨年,跨月,閏月也都無(wú)所謂了。
通用函數(shù)封裝上述代碼還是有點(diǎn)缺陷的,因?yàn)闀r(shí)分秒沒(méi)有處理,如果有時(shí)分秒,也要先抹去。
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", ] console.log(continueDays(days)) function continueDays(arr_days) { // 先排序,然后轉(zhuǎn)時(shí)間戳 let days = arr_days.sort().map((d, i) => { let dt = new Date(d) dt.setDate(dt.getDate() + 4 - i) // 處理為相同日期 // 抹去 時(shí) 分 秒 毫秒 dt.setHours(0) dt.setMinutes(0) dt.setSeconds(0) dt.setMilliseconds(0) return +dt }) let ret = true days.forEach(d => { if (days[0] !== d) { ret = false } }) return ret }
這個(gè)函數(shù)只是改動(dòng)了2個(gè)地方,抹去 時(shí) 分 秒 毫秒 和 循環(huán)比較,其他都一樣。
小結(jié)js 處理時(shí)間還是非常簡(jiǎn)單的,比如寫個(gè)日期插件,其實(shí)借助 Date 非常容易實(shí)現(xiàn),但實(shí)現(xiàn)你要了解 Date 的 api 才行。
當(dāng)然要說(shuō)簡(jiǎn)單,還是 php 最簡(jiǎn)單,那簡(jiǎn)直逆天。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/79977.html
摘要:不過(guò)讓流行起來(lái)的原因應(yīng)該是是目前所有主流瀏覽器上唯一支持的腳本語(yǔ)言。經(jīng)過(guò)測(cè)試,數(shù)字字符串布爾日期可以直接賦值,修改不會(huì)產(chǎn)生影響。再考慮對(duì)象類型為或者的情況。對(duì)于結(jié)果聲明其類型。判斷對(duì)象的類型是還是,結(jié)果類型更改。 轉(zhuǎn)載自我的個(gè)人博客 歡迎大家批評(píng)指正 1. 第一個(gè)頁(yè)面交互 這里最需要學(xué)習(xí)的老師的代碼中,每一部分功能都由函數(shù)控制,沒(méi)有創(chuàng)建一個(gè)全部變量。且最后有一個(gè)函數(shù)來(lái)控制執(zhí)行代碼...
摘要:現(xiàn)在市面上的不少,上一搜一大堆。當(dāng)然這段時(shí)間也為了學(xué)習(xí),所以邊學(xué)邊寫了這個(gè)類庫(kù)。一是為了練手,二是為了以后能提高開發(fā)的效率,畢竟自己寫的自己熟,以后也會(huì)不斷更新。 現(xiàn)在市面上js的utils不少,npm上一搜一大堆。當(dāng)然這段時(shí)間也為了學(xué)習(xí)ts,所以邊學(xué)邊寫了這個(gè)類庫(kù)。一是為了練手ts,二是為了以后能提高開發(fā)的效率,畢竟自己寫的自己熟,以后也會(huì)不斷更新。github地址:https://...
摘要:可以看到,遙遙領(lǐng)先的城市有三個(gè),加州是銷售之王。將再拖拽到,并右鍵將其粒度改為月。從上圖可以看到,指定了個(gè)分類,最右上角加州就是最突出的一組,整個(gè)聚類只有它一個(gè)元素,而畫面偏左下角的也是一類,這些是業(yè)績(jī)較差的一組數(shù)據(jù)。 1. 引言 引用著名瑞典統(tǒng)計(jì)學(xué)家 Hans Rosling 的一句話:想法來(lái)源于數(shù)字、信息,再到理解。 分析數(shù)據(jù)的最好方式是可視化,因?yàn)榭梢暬休d的信息密度更高,甚至可...
摘要:比如我們對(duì)調(diào)與會(huì)怎樣我們得到了三個(gè)不同類目近個(gè)月的趨勢(shì),之所以是折線圖,因?yàn)閳D表的維度軸列是連續(xù)的。在正式介紹標(biāo)記區(qū)域前,先理解一下為何會(huì)發(fā)生這種轉(zhuǎn)變表格類組件是雙維度組件,折線圖是單維度組件。 1. 引言 Tableau 探索式分析功能非常強(qiáng)大,各種功能組合似乎有著無(wú)限的可能性。 今天筆者會(huì)分析這種探索式模型解題思路,一起看看這種探索式分析功能是如何做到的。 2. 精讀 要掌握探索式...
閱讀 773·2019-08-29 16:32
閱讀 841·2019-08-29 12:31
閱讀 3221·2019-08-26 18:26
閱讀 3161·2019-08-26 12:20
閱讀 1738·2019-08-26 12:00
閱讀 3011·2019-08-26 10:58
閱讀 2818·2019-08-23 17:08
閱讀 2315·2019-08-23 16:32