【问题标题】:How do I display the end date 31-03- year(depending upon the start_date)?如何显示结束日期 31-03- 年(取决于 start_date)?
【发布时间】:2019-06-13 09:40:45
【问题描述】:

我有两个日期选择器。第一个日期选择器是开始日期,第二个日期选择器是结束日期。

我的年份范围是

2018-2019 (Last date is 31-03-2019)
2019-2020 (My start date is 01-04-2019 and the end date is 31-03-2020)
2020-2021 (My start date is 01-04-2020 and the end date is 31-03-2021)
   //and so on

现在按照当年,我们在2018-2019的范围内。

所以我的结束日期是 31-03-2019。

如何显示结束日期 31-03- 年(取决于 start_date)?

我应该需要一些 jquery 或 PHP 来处理这个吗?

$(function() {
  var year = (new Date).getFullYear();

  $(".start_date").datepicker({
    showOn: "button",
    buttonImage: "http://jqueryui.com/resources/demos/datepicker/images/calendar.gif",
    buttonImageOnly: true,
    buttonText: "Select date",
    dateFormat: "dd-mm-yy",
    changeMonth: true,
    changeYear: true,
    minDate: 0,
    //maxDate    :  "+1Y",
    maxDate: new Date(year, 03, 31),
    // maxDate: "+3m"
    showAnim: "clip",
    numberOfMonths: 1
  });
  $(".end_date").datepicker({
    showOn: "button",
    buttonImage: "http://jqueryui.com/resources/demos/datepicker/images/calendar.gif",
    buttonImageOnly: true,
    buttonText: "Select date",
    dateFormat: "dd-mm-yy",
    changeMonth: true,
    changeYear: true,
    minDate: 0,
    //maxDate    :  "+1Y",
    maxDate: new Date(year, 03, 31),
    showAnim: "clip"
    //numberOfMonths: 2
  });

});
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">

<div class="form-group">
  <label>Start Date</label>
  <input type="text" name="start_date" placeholder="Start Date" id="start_date" class="start_date form-control">
</div>
<div class="form-group">
  <label>End Date</label>
  <input type="text" name="end_date" id="end_date" placeholder="End Date" class="end_date form-control">
</div>
<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.3.1.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>

你能帮我解决这个问题吗?

【问题讨论】:

  • 为什么不maxDate: new Date(year + 1, 03, 31)

标签: php jquery jquery-ui datepicker


【解决方案1】:

您可以使用onSelect 选项在.end_date 日期选择器中设置maxDate

$(function() {
  var year = (new Date).getFullYear();

  $(".start_date").datepicker({
    showOn: "button",
    buttonImage: "http://jqueryui.com/resources/demos/datepicker/images/calendar.gif",
    buttonImageOnly: true,
    buttonText: "Select date",
    dateFormat: "dd-mm-yy",
    changeMonth: true,
    changeYear: true,
    minDate: 0,
    //maxDate    :  "+1Y",
    maxDate: new Date(year, 03, 31),
    // maxDate: "+3m"
    showAnim: "clip",
    numberOfMonths: 1,
    onSelect: function(dt, dp) {
      var selected = $.datepicker.parseDate("dd-mm-yy", dt);
      var yy = selected.getFullYear();
      var mm = selected.getMonth();
      var dd = selected.getDate()
      var nextYear = $.datepicker.parseDate("dd-mm-yy", "31-03-" + (yy + 1));
      $(".end_date").datepicker("option", "maxDate", nextYear);
    }
  });
  $(".end_date").datepicker({
    showOn: "button",
    buttonImage: "http://jqueryui.com/resources/demos/datepicker/images/calendar.gif",
    buttonImageOnly: true,
    buttonText: "Select date",
    dateFormat: "dd-mm-yy",
    changeMonth: true,
    changeYear: true,
    minDate: 0,
    //maxDate    :  "+1Y",
    maxDate: new Date(year, 03, 31),
    showAnim: "clip"
    //numberOfMonths: 2
  });

});
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">

<div class="form-group">
  <label>Start Date</label>
  <input type="text" name="start_date" placeholder="Start Date" id="start_date" class="start_date form-control">
</div>
<div class="form-group">
  <label>End Date</label>
  <input type="text" name="end_date" id="end_date" placeholder="End Date" class="end_date form-control">
</div>
<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.3.1.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>

由于我们以字符串形式获取日期,我们可以使用$.datepicker.parseDate() 将其解析为日期并将年份递增为新日期。

希望对您有所帮助。

【讨论】:

  • 感谢您的回答,您能分享一下输出吗,因为我检查了您的 sn-p 但没有得到预期的输出。
  • 给我一些时间检查一下。
  • 我的最后两个方案是第一个方案的唯一问题。如果开始日期是 21-01-2019,那么结束日期不应超过 31-03-2019。
  • @user9437856 我无法确定这三种情况是什么以及哪些日期应该导致特定范围。你有2018 - 20192019 - 2020,但不清楚切入点在哪里。你的意思是01-01-201831-12-2018?请澄清。
  • 抱歉我的解释不好。我会为你详细解释。我有两个日期 startDate 和 endDate。我的截止日期是 31-03。现在,如果用户选择 startDate 01-04-2019,则 endDate 将为 31-03-2020(这与您的答案相符),但如果我选择 startDate 10-01-2019,则 endDate 应为 31-03-2019。
猜你喜欢
  • 2019-06-24
  • 2018-12-25
  • 1970-01-01
  • 2018-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多