【问题标题】:How to calculate the number of the week from the start and end date period?如何计算开始日期和结束日期期间的周数?
【发布时间】:2020-05-27 13:32:45
【问题描述】:

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

有人可以帮忙解决我自己无法弄清楚的问题吗? 谢谢!

这里是设置周期为 01-05-2020 到 31-05-2020 的 JS 日期选择器代码行,如何从这个 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>

【问题讨论】:

    标签: javascript php html datepicker bootstrap-datepicker


    【解决方案1】:

    根据您的主要想法,您可以使用 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);
    

    或者如果更适合你,你可以试试这个答案 Getting current week of current month

    【讨论】:

    • 为什么要使用 4 月 31 日?
    • 现在不是 4 月 31 日而是 5 月 31 日,因为 Date api 的月份是基于 0 索引的。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-08
      • 1970-01-01
      • 1970-01-01
      • 2010-11-19
      • 1970-01-01
      相关资源
      最近更新 更多