記錄解決獲取日期為當(dāng)年第幾周問(wèn)題,之所以記錄周數(shù)的運(yùn)算,而不是月,是因?yàn)橹艽嬖诳缒晏匦?
通常一年第一周和最后一周都會(huì)出現(xiàn)跨年現(xiàn)象。程序在不允許兩年出現(xiàn)重疊周的情況下,會(huì)約定以周四所在日期的年份為主,即周四的日期為哪一周,則這周歸屬于哪一年。比如2019-12-30 ~ 2020-1-5 按中國(guó)習(xí)慣周一為第一天,該日期為19年而周日5號(hào)為20年,此時(shí)以周四2020-1-2所在年份為主,所以該周應(yīng)該歸屬在2020年第一周。
常用方法
// 獲取日期所在周為一年第幾周 假設(shè)每周周一為第一天
function?getWeekIndex(d)?{
? ? // 截掉時(shí)分秒保留整數(shù)天
????var?date?=?new?Date((d?||?new?Date()).toLocaleDateString());
????//?設(shè)置日期為當(dāng)前周周四
????date.setDate(date.getDate()?+?(4?-?(date.getDay()||7)));
????var?year?=?date.getFullYear();
????var?firstDate?=?new?Date(year,?0,?1);
????firstDate.setDate(firstDate.getDate()?+?(4?-?(firstDate.getDay()||7)));
????//?當(dāng)年第一天早于周四?第一周延后七天
????if?(firstDate.getFullYear()?<?year)?{
????????firstDate.setDate(firstDate.getDate()?+?7);
????}
????//?計(jì)算當(dāng)前周和第一周之間周數(shù)差
????return?Math.ceil(((date?-?firstDate)?/?86400000?+?1)?/?7?);
}