js關於日期的演算法

2021-10-06 17:45:14 字數 2146 閱讀 6246

獲取當前週數

判斷年份是否為潤年

獲取某年某月的天數

計算兩個日期差幾天

周獲取對應的日期

計算環比日期

/**

* 獲取當前週數

*/export

function

getweeknumber

(y, m, d)

//那一年第一天是星期幾

var yearfirstday =

newdate

(year,0,

1).getday()

;//計算是第幾周 - 1 從周一開始算

days += yearfirstday -1;

var week = math.

ceil

(days /7)

;return week;

}/**

*判斷年份是否為潤年

*/function

isleapyear

(year)

/** *獲取某年某月的天數

*/export

function

getmonthdays

(year, month)

/** * 計算兩個日期差幾天

* @param sdate1

* @param sdate2

* @returns

* @constructor

*/export

function

computation

(sdate1, sdate2)

/** * 周獲取對應的日期

* 給乙個年份和第幾周,計算出這週是從幾號到幾號

* 一年分為54周,第一周是1月1日到第乙個週日,第二週是今年的第乙個周一往後推一周,以此類推,第53周的時候如果沒到12月31日,則該年度有54周,反之有53周,到12月31日不管是不是週末,都截止到最後一周的結束日期

* @param long

* @returns }

*///例如 2012 年就跨了54周,也有很多是53周的

//let week2012 = whichweek(2012)

//呼叫完得到的是乙個陣列,取對應周即可

//時間戳轉年月日 引數是秒的時間戳 函式返回乙個物件 物件裡有年 月 日

function

yearday

(long)

return yearday

}//計算一年中的每一周都是從幾號到幾號

//第一周為1月1日到 本年的 第乙個週日

//第二週為 本年的 第乙個周一 往後推到週日

//以此類推 再往後推52周。。。

//如果最後一周在12月31日之前,則本年有垮了54周,反之53周

//12月31 日不論是週幾,都算為本週的最後一天

//引數年份 ,函式返回乙個陣列,陣列裡的物件包含 這一周的開始日期和結束日期

export

function

whichweek

(year)

let arr =

let longnum = d.

setdate

(d.getdate()

)if(longnum >

+new

date

(year,0,

1))let oneitem =

yearday

(longnum /

1000

) oneitem.last =

yearday

( longnum /

1000

+86400*6

) arr.

push

(oneitem)

var laststr

for(var i =

0; i<

51;i++)if

(laststr <

+new

date

(year +1,

0,1)

)else

return arr

}/**

*計算環比日期

*/export

function

chainratio

(time)

關於日期的常用演算法

關於日期的常用演算法有很多,但如果掌握了基本的演算法,難一點的可以分解為簡單的,各個擊破。1 判斷一年是否為閏年 判斷一年是否為閏年 static boolean isleapyear int year 2 獲得某一年的總天數 閏年366天,非閏年355 獲得某一年的總天數 static int g...

關於日期的常用演算法

關於日期的常用演算法有很多,但如果掌握了基本的演算法,難一點的可以分解為簡單的,各個擊破。1 判斷一年是否為閏年 判斷一年是否為閏年 static boolean isleapyear int year 2 獲得某一年的總天數 閏年366天,非閏年355 獲得某一年的總天數 static int g...

關於JS生成日期和校驗日期

以前寫網頁的時候,經常碰到選擇日期的問題,其實就是判斷某年某月有多少天。一般的做法是先判斷是幾月份,然後決定有多少天 一般用switch 如果是2月的話,還得判斷選擇的年份是不是閏年,再決定是28天還是29天。這樣是乙個很規矩的做法,而且也很符合邏輯。但是,如果是為了達到目的的話,是不用這麼麻煩的 ...