2017-10-05 92 views
1

我已經搜索了網頁,並找到了腳本以獲取每週的星期編號。但是我的計數是不同的。下面的圖片是我想要得到的週數。當我使用'1/5/2015'進行測試時,我的代碼得到的星期數是2,但是在我的要求中,星期數應該是1。有人可以幫助我嗎?提前致謝。在整個星期的基礎日期中獲取星期編號基於javascript

enter image description here

我找到的JavaScript在IamSilviu/Get week number

有我的代碼:

function myWeekNumber(thisDate) { 
var dt = new Date(thisDate) 
    var onejan=new Date(dt.getFullYear(), 0, 2); 
    return Math.ceil((((dt - onejan)/86400000) + onejan.getDay() + 1)/7); } 
+0

所以確定如果第一週是滿的並且調整 – epascarello

+0

在[this so question]中看到答案(https://stackoverflow.com/questions/9045868/javascript-date-getweek) - 那是正確的嗎? –

+0

請避免含糊不清的日期。對我而言,「2015年5月1日」是2015年5月1日,但從問題的角度來看,我預計你認爲它是2015年1月5日。另外,您需要定義如何確定它在第2周。ISO週數開始在第一週包含一年的週四,所以這是第二週。你想使用什麼算法? – RobG

回答

-2

的js具有可以用來從的給定日期獲取日期功能inbulid功能一週getweek()。

var week=date.getWeek() 
+0

erm ...不,它沒有(並且甚至沒有**功能**你正在顯示) –

+0

當提出有關語言特徵的聲明時,總是很方便的包含對[*規範的相關部分的引用*](http://ecma-international.org/ecma-262/8.0/#sec-date-objects)。如果你找不到它,它可能不是該語言的一個功能... – RobG

0

你想實現的算法似乎是:

  1. 周在週日開始
  2. 一年的第一週是具有任何一年的天數之一,例如2016年1月1日是星期五,所以2016年的第一週開始在週日27 2015年

月在這種情況下,最好使用UTC方法來避免日光節約時間的問題:

function getWeekNumberNonISO(d) { 
 
    // Create UTC equivalent for 23:59:59.999 on the passed in date 
 
    var sat = new Date(Date.UTC(d.getFullYear(), d.getMonth(), d.getDate(),23,59,59,999)); 
 
    // Set to Saturday at end of week 
 
    sat.setUTCDate(sat.getUTCDate() + 6 - sat.getUTCDay()); 
 
    // Get first day of year 
 
    var firstDay = new Date(Date.UTC(sat.getUTCFullYear(), 0, 1)); 
 
    // Set to Sunday on or before, i.e. first day of first week in year 
 
    firstDay = firstDay.setUTCDate(firstDay.getUTCDate() - firstDay.getUTCDay()); 
 
    // Week number is difference in dates divided by ms/week rounded 
 
    return Math.round((sat - firstDay)/(6.048e8)); 
 
} 
 

 
// Get week number for Mon 5 Jan 2015 
 
console.log(getWeekNumberNonISO(new Date(2015,0,5))); // 2 
 
// Get week number for Sat 31 Dec 2011 
 
console.log(getWeekNumberNonISO(new Date(2011,11,31))); //53 
 
// Get week number for Sat 1 Jan 2011 
 
console.log(getWeekNumberNonISO(new Date(2011,0,1))); // 1 
 
// Get week number for Sun 2 Jan 2011 
 
console.log(getWeekNumberNonISO(new Date(2011,0,2))); // 2

相關問題