Get friday from week number and year in javascript

后端 未结 4 1991
执笔经年
执笔经年 2020-12-11 19:22

I have week number and year, need to find out date (friday) in that week and year.

function getFriday(week_num, year)
{
    ?

    return friday_date_object;         


        
相关标签:
4条回答
  • 2020-12-11 19:50

    The week #1 is the week with the first Thursday.

    Here is a function to get any day:

    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));
    

    week numbers start at 1 until 52 or 53 it depends the year.
    For the day numbers, 0 is Monday, 1 is Tuesday, ... and 4 is Friday

    0 讨论(0)
  • 2020-12-11 20:07

    Here's some quick code

    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;
    }
    

    Split some variables for readability.

    But if you find yourself writing more complex time operations, you're better using a library instead.

    0 讨论(0)
  • 2020-12-11 20:08

    i think if i should not use any date library i would:

    assuming u use a christian week, where sunday is the frist day of the week. this is neccessary to find out if the first days in a year belong to the first week of the year or not.

    create an array. months = new Array(31,28,31, ... ) if(year % 4 == 0) then february has 29 days.

    days = num_week * 7;

    then iterate over the month and decrease days by month[current]. if days gets negative increase days with the current month days again.

    result: year-(current+1)-days

    i hope this helps you. what u have to add on your own is the handling for january and the first days.

    0 讨论(0)
  • 2020-12-11 20:11

    Use the date.js library. It's great for all date-related functions.

    0 讨论(0)
提交回复
热议问题