国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

js 判斷一組日期是否是連續(xù)的

MartinHan / 3500人閱讀

摘要:?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)題。
然后就有了下面的代碼。

讓時(shí)間戳抹平一切吧

為了不糾結(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ān)文章

  • task0002(一)- JavaScript數(shù)據(jù)類型及語(yǔ)言基礎(chǔ)

    摘要:不過(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í)行代碼...

    elarity 評(píng)論0 收藏0
  • egUtils—JavaScript工具類庫(kù)

    摘要:現(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://...

    Harriet666 評(píng)論0 收藏0
  • 精讀《Tableau 入門》

    摘要:可以看到,遙遙領(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的信息密度更高,甚至可...

    svtter 評(píng)論0 收藏0
  • 精讀《Tableau 探索式模型》

    摘要:比如我們對(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. 精讀 要掌握探索式...

    curried 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<