簡體   English   中英

從星期天開始獲取星期幾

[英]Get week number with week starting from sunday

我目前有以下代碼,在該代碼中,我可以通過添加和減號按鈕獲得星期幾以及該周的開始/結束日期:

 Date.prototype.getWeekNumber = function() { var d = new Date(Date.UTC(this.getFullYear(), this.getMonth(), this.getDate())); var dayNum = d.getUTCDay() || 7; d.setUTCDate(d.getUTCDate() + 4 - dayNum); var yearStart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1)); return Math.ceil((((d - yearStart) / 86400000) + 1) / 7); }; var curr; weekReset(); function display() { start.textContent = curr; end.textContent = endOfWeek(curr); week.textContent = ("Week " + curr.getWeekNumber()); } function weekReset() { curr = startOfWeek(new Date()); display(); } function startOfWeek(date) { var start = new Date(date); start.setHours(0, 0, 0, 0); start.setDate(start.getDate() - start.getDay()); return start; } function endOfWeek(date) { date = startOfWeek(date); date.setDate(date.getDate() + 6); return date; } function weekPlus(weeks) { curr.setDate(curr.getDate() + 7 * weeks); display(); } 
 <div id="start">start</div> <div id="end">end</div> <div id="week">week</div> <button onclick="weekReset()">current</button> <button onclick="weekPlus(1)">add</button> <button onclick="weekPlus(-1)">substract</button> 

問題是它顯示當前星期數為34

8月27日星期日開始

9月02星期六結束

...這應該是第35周。

那么,如何更改此功能以將星期天計算為一周的第一天,將星期六計算為一周的最后一天?

任何幫助表示贊賞。

您的代碼d.setUTCDate(d.getUTCDate() + 4 - dayNum); 正在將您的日期重新設置為三天前。 我認為這就是您獲得上周人數的原因。 我檢查了刪除代碼,它工作正常。

您的問題在這里:

var dayNum = d.getUTCDay() || 7;
d.setUTCDate(d.getUTCDate() + 4 - dayNum);

該代碼用於ISO周,並將周日的天數調整為7,並將日期設置為周四,其中周是周一至周日。

您想要星期天到星期六有幾個星期,而又想星期幾是星期幾,所以使用:

var dayNum = d.getUTCDay();
d.setUTCDate(d.getUTCDate() - dayNum);

可以簡化為:

d.setUTCDate(d.getUTCDate() - d.getUTCDay());

  Date.prototype.getWeekNumber = function () { var d = new Date(Date.UTC(this.getFullYear(), this.getMonth(), this.getDate())); d.setUTCDate(d.getUTCDate() - d.getUTCDay()); var yearStart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1)); return Math.ceil((((d - yearStart) / 86400000) + 1) / 7); }; var c = new Date(2017,7,26); console.log(c.getWeekNumber() + ':' + c.toString()); var d = new Date(2017,7,27); console.log(d.getWeekNumber() + ':' + d.toString()); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM