如何计算开始日期和结束日期期间的周数?

How to calculate the number of the week from the start and end date period?

主要思想是获取两个日期之间的周数(从开始日期和结束日期开始)! 类似这样的事情:如果期间是 01-05-2020 到 31-05-2020 并且在数据选择器中我选择 08-05-2020 结果将为 2,即第二周。

谁能帮忙解决我自己无法弄清楚的问题, 谢谢!

这里是 JS 日期选择器代码行,设置期间为 01-05-2020 到 31-05-2020,如何从这个 js 代码回显未来 php 用法或输入值的周数?

js

<!-- js -->
<script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js' type='text/javascript'></script>
<!-- Datepicker -->
<link href='https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.9.0/css/bootstrap-datepicker.min.css' rel='stylesheet' type='text/css'>
<script src='https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.9.0/js/bootstrap-datepicker.min.js' type='text/javascript'></script>


<script type="text/javascript">
$(document).ready(function(){

  $('#datepicker').datepicker({
    format: "dd/mm/yyyy",
    startDate: new Date('2020-5-1'),
    endDate: new Date('2020-5-31')
  });

});
</script>

html

<div class="form-group">
<label for="formGroupExampleInput">Date of sale</label>
<input type="text" name="dos" value="<?php echo $doc; ?>" class="form-control" id='datepicker' id="formGroupExampleInput">
</div>

根据您的主要想法,您可以使用 date-fns 库来获取以周为单位的日期之间的差异。

// import date-fns library
<script src="https://cdnjs.cloudflare.com/ajax/libs/date-fns/2.0.0-alpha0/date_fns.min.js"></script>

那么您可以:

let diffCalendarWeeks = dateFns.differenceInCalendarWeeks(new Date(2020,4,31), new Date(2020,4,1));
let diffWeeks = dateFns.differenceInWeeks(new Date(2020,4,31), new Date(2020,4,1))
console.log(diffCalendarWeeks); //5
console.log(diffWeeks); // 4

查看 date-fns 文档 https://date-fns.org/v2.0.0-alpha.1/docs/differenceInCalendarWeeks

如果您想知道指定月份内的周数,您可以查看所选日期和第一个日期之间的差异。

let selectedDate = new Date(2020, 4, 15);
let startOfMonth = dateFns.startOfMonth(new Date());
var selectedWeek = dateFns.differenceInWeeks(selectedDate, startOfMonth) + 1;
console.log(selectedWeek);

或者你可以尝试这个答案,如果更适合你

谢谢,我找到了解决问题的方法。 在这里,也许有人需要..

<script>
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(2014,10,2);
dt2 = new Date(2014,10,11);
console.log(diff_weeks(dt1, dt2));

dt1 = new Date("June 13, 2014 08:11:00");
dt2 = new Date("October 19, 2014 11:13:00");
console.log(diff_weeks(dt1, dt2));
<script> 

lnk。 https://www.w3resource.com/javascript-exercises/javascript-date-exercise-47.php