簡體   English   中英

在javascript中給出一年,一周和一天的第一個星期日期

[英]Getting first date in week given a year,weeknumber and day number in javascript

以下是計算周日期的代碼,

//Gets the week dayNumber date against the year,week number
var getWeekDate = function (year, weekNumber, dayNumber) {

var date = new Date(year, 0, 10, 0, 0, 0),
    day = new Date(year, 0, 4, 0, 0, 0),
    month = day.getTime() - date.getDay() * 86400000;
return new Date(month + ((weekNumber - 1) * 7 + dayNumber) * 86400000);
};

如果我給出以下值,代碼工作正常,

輸入:
年= 2012年
weekNumber = 1
dayNumber = 0 //我的星期從星期一開始,所以我給它0。

輸出:
2012年1月2日//這是正確的。

輸入:
年= 2013年
weekNumber = 1
dayNumber = 0 //我的星期從星期一開始,所以我給它0。

輸出:
2012年12月31日//這是正確的。

2013年的第一周將從2013年1月7日ieMonday開始,但上面的代碼沒有正確計算。

我建議查看ISO日歷插件moment.js

這實際上是准確的,因為2013年第1周的第0天(星期一)仍然是2012年的一部分。您可以使用條件來檢查該周的請求日是否屬於該年的一部分。

//Gets the week dayNumber date against the year,week number
var getWeekDate = function (year, weekNumber, dayNumber) {

var date = new Date(year, 0, 10, 0, 0, 0),
    day = new Date(year, 0, 4, 0, 0, 0),
    month = day.getTime() - date.getDay() * 86400000,
    ans = new Date(month + ((weekNumber - 1) * 7 + dayNumber) * 86400000);
if (weekNumber === 1 && ans.getMonth() !== 0) {
    // We're still in last year... handle appropriately
}
return ans;
};

順便說一句,將一些變量檢查放在適當位置並不是一個壞主意。 我可以輸入第0周,第55周和第92天,沒有任何問題。 顯然結果仍然准確,但它們可能會給那些在日歷方面思考的人帶來令人困惑的結果。

暫無
暫無

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

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