0

As the title says I want to calculate the number of weeks between a start date and end date I'm a bit confuse can someone shed some light on me.

var start_date = new Date();
var end_date = new Date(2018,09,30);
glen
  • 3
  • 1
  • 7
  • 1
    Define "week". A 7-day period? A Monday-to-Sunday period? something else? Also, what exactly are you a bit confused on? We could help better with more details. – Amadan Sep 25 '18 at 05:18
  • possible duplicate https://stackoverflow.com/questions/22859704/number-of-weeks-between-two-dates-using-javascript – Hrishikesh Sep 25 '18 at 05:20
  • Possible duplicate of [Calculate date difference in weeks (Javascript)](https://stackoverflow.com/questions/20587660/calculate-date-difference-in-weeks-javascript) – zer00ne Sep 25 '18 at 05:21
  • @Amadan I want Monday to Friday school week – glen Sep 25 '18 at 06:21
  • But all of you answers and suggestions are correct a little tweak on my end and I can get it working what a helpful community :) – glen Sep 25 '18 at 06:22

4 Answers4

1

use moment.js.

var start_date = new Date();
var end_date = new Date(2018,09,30);

change to format

var now  = "04/09/2013 15:00:00";
    var then = "04/09/2013 14:20:30";

moment.utc(moment(now, "DD/MM/YYYY HH:mm:ss").diff(moment(then, "DD/MM/YYYY HH:mm:ss"))).format("HH:mm:ss")

you can get total no of days, you can divide/7. so that you can get no of weeks.

Chickenturtle
  • 159
  • 11
1
function diff_weeks(dt2, dt1) 
 {

  var diff =(dt2.getTime() - dt1.getTime()) / 1000;
  diff /= (60 * 60 * 24 * 7);
  return Math.abs(Math.round(diff));

 }

dt1 = new Date(2018,09,25);
dt2 = new Date(2018,10,02);
alert(diff_weeks(dt1, dt2));

dt1 = new Date("September 25, 2018 08:11:00");
dt2 = new Date("October 02, 2018 08:11:00");
alert(diff_weeks(dt1, dt2));

this function will give you the difference in weeks

haider
  • 198
  • 2
  • 9
0

Try this code and number of weeks will be shown in dateArr also you will see here every week start- end. You can edit code for your needs.

var start = new Date(Date.UTC(2016, 09, 30, 0, 0, 0));
    var end = new Date(Date.UTC(2016, 11, 02, 0, 0, 0));
    var sDate;
    var eDate;
    var dateArr = [];

    while(start <= end){

      if (start.getDay() == 1 || (dateArr.length == 0 && !sDate)){
        sDate = new Date(start.getTime());
      }

      if ((sDate && start.getDay() == 0) || start.getTime() == end.getTime()){
            eDate = new Date(start.getTime());
      }

      if(sDate && eDate){
        dateArr.push({'startDate': sDate, 'endDate': eDate});
        sDate = undefined;
        eDate = undefined;
      }

        start.setDate(start.getDate() + 1);
    }

    console.log(dateArr);
Nezir
  • 6,727
  • 12
  • 54
  • 78
0

There are some really cool JavaScript libraries you can use for this. A nice lightweight one would be date-fns. I’ve linked the download link and I’ve written some example code for you from their documentation:

Download it/add it to your packages: https://date-fns.org

Documentation: https://date-fns.org/v1.29.0/docs/differenceInWeeks

Example:

// How many full weeks are between 5 July 
// 2014  and 20 July 2014?
var result = differenceInWeeks(
  new Date(2014, 6, 20),
  new Date(2014, 6, 5)
)
//=> 2
Sammyjo20
  • 79
  • 2
  • 9