繁体   English   中英

使用js获取开始日期和结束日期之间的周数

[英]Get the number of weeks between a start date and end date using js

正如标题所示,我想计算开始日期和结束日期之间的周数,这让我有些困惑,因为有人可以给我一些启发。

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

使用moment.js。

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

更改格式

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

您可以获得总天数,可以除以7。 这样一来您就不会有几周的时间了。

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

此功能将在几周内为您带来不同

尝试使用此代码,dateArr中将显示星期数,您也将在每个星期开始时看到这里。 您可以根据需要编辑代码。

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

您可以使用一些非常酷的JavaScript库。 一个不错的轻量级版本将是date-fns。 我已经链接了下载链接,并从他们的文档中为您编写了一些示例代码:

下载/将其添加到您的软件包中: https : //date-fns.org

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

例:

// 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM