2010-12-29 47 views
5

私は週番号と年があり、その週と年の日付(金曜日)を知る必要があります。JavaScriptで週番号と年からの金曜日を取得する

function getFriday(week_num, year) 
{ 
    ? 

    return friday_date_object; 
} 

どうすればよいですか?

+0

確かにgetDay(day_num、week_num、year)は便利でしょうか? – Jim

+0

「その週の金曜日に変換する必要がありますか?」 - あなたの質問に言い直してください - あなたが何を求めているのかを正確に伝えるのは難しいです。 – JM4

+0

@Jim day_numは常に5(friday)です。関数は同じ結果を返すでしょう。 – Peter

答えて

16

第1週は、第1木曜日の週です。ここで

は、任意の日を取得するための機能である:

var w2date = function(year, wn, dayNb){ 
    var j10 = new Date(year,0,10,12,0,0), 
     j4 = new Date(year,0,4,12,0,0), 
     mon1 = j4.getTime() - j10.getDay() * 86400000; 
    return new Date(mon1 + ((wn - 1) * 7 + dayNb) * 86400000); 
}; 
console.log(w2date(2010, 1, 4)); 

週番号は、それが年によって異なる52または53まで、1から始まります。
月曜日は0、月曜日は1、火曜日は...、4は金曜日

+0

ありがとう、これは良い作品 – Peter

1

date.jsライブラリを使用してください。これは、日付関連のすべての関数に最適です。

+0

とにかく、どんな外部ライブラリも使用できません。 – Peter

1

はここでいくつかの簡単なコード

var DAY = 86400000; 

function getFriday(weekNum, year) { 
    var year = new Date(year.toString()); // toString first so it parses correctly year numbers 
    var daysToFriday = (5 - year.getDay()); // Note that this can be also negative 
    var fridayOfFirstWeek = new Date(year.getTime() + daysToFriday * DAY); 
    var nthFriday = new Date(fridayOfFirstWeek.getTime() + (7 * (weekNum - 1) * DAY)); 
    return nthFriday; 
} 

読みやすくするためにいくつかの変数の分割です。

しかし、より複雑な時間操作を記述している場合は、代わりにライブラリを使用する方がよいでしょう。私は、任意の日付のライブラリを使用してはならない場合

+0

新しい日付(2010)がThuに1970年1月1日にChromeを提供 – Mic

+0

DAY変数は何を表していますか? –

+0

@Blake、1日のミリ秒数 – Mic

0

私はと思う:

は、uは日曜日が週の延期日であるキリスト教の週を、使用と仮定します。これは、1年の最初の日がその年の最初の週に属しているかどうかを調べるために必要です。

アレイを作成します。 months = new Array(31,28,31、...) (year%4 == 0)ならば、2月は29日間です。

日= num_week * 7;

次に、月を繰り返し、月[現在]を減らします。現在の月の日数で日数が負の増加日数になった場合。

結果:year-(1 +電流)私はこれがあなたの役に立てば幸い

を-days。あなた自身で追加しなければならないものは、1月と初日の処理です。

+1

うるう年は次のように計算されます。 '((年%4 === 0)&&(年%100!== 0))|| (年%400 === 0) ' – magikMaker

関連する問題