Использование Datepicker для выбора даты и отображения даты минус один день - PullRequest
0 голосов
/ 16 марта 2020

Я пытаюсь использовать Datepicker для выбора даты, а затем отображать эту дату минус один день.

Например, в приведенном ниже коде я бы хотел, чтобы пользователь мог выбрать «Воскресенье, 15 марта 2020 года», но я бы хотел, чтобы отображалось «Суббота, 14 марта 2020 года». после нажатия кнопки.

У меня были проблемы с поиском / выяснением ответа. Любая помощь будет принята с благодарностью!

$(function() {
  $("#datepicker").datepicker({
    dateFormat: "DD, MM d, yy",
    minDate: 0,
  });
});

function showDate() {

  var dateOptions = {
    weekday: "long",
    year: "numeric",
    month: "long",
    day: "numeric"
  };
  var selectedDate = $("#datepicker").datepicker("getDate");
  var currentLanguage = $("#language option:selected").val();
  var dateClass = document.getElementsByClassName("date");
  for (var i = 0; i < dateClass.length; i++) {
    dateClass[i].innerHTML = selectedDate.toLocaleDateString(currentLanguage, dateOptions);
  }
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>

<table>
  <tr>
    <td>Please select the event date.</td>
    <td>&nbsp;&nbsp;<input type="text" id="datepicker" size="30" autocomplete="off"></td>
  </tr>
</table>

<button onclick="showDate()">Show Date/button</button>

<p>Please send the notice on <span class="date"></span>.</p>

Ответы [ 2 ]

1 голос
/ 16 марта 2020

Обычно я всегда ценю ванильный JS подход, но когда дело доходит до обработки даты / времени, я действительно не могу рекомендовать момент. js достаточно, как сказал Шон .

В этом случае subtract(1, 'd') выполнит работу, а .format('LL') выведет удобный для пользователя вывод.

$(function() {
  $("#datepicker").datepicker({
    dateFormat: "DD, MM d, yy",
    minDate: 0,
  });
});

function showDate() {

  var dateOptions = {
    weekday: "long",
    year: "numeric",
    month: "long",
    day: "numeric"
  };
  var selectedDate = $("#datepicker").datepicker("getDate");
  var currentLanguage = $("#language option:selected").val();
  var dateClass = document.getElementsByClassName("date");
  for (var i = 0; i < dateClass.length; i++) {
    dateClass[i].innerHTML = moment(selectedDate).subtract(1, 'd').format('LL');
  }
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>

<table>
  <tr>
    <td>Please select the event date.</td>
    <td>&nbsp;&nbsp;<input type="text" id="datepicker" size="30" autocomplete="off"></td>
  </tr>
</table>

<button onclick="showDate()">Show Date/button</button>

<p>Please send the notice on <span class="date"></span>.</p>
1 голос
/ 16 марта 2020

добавить эту строку

  var dt = new Date(selectedDate);

dt.setDate( dt.getDate() - 1 );

and replace this:

dateClass[i].innerHTML = dt.toLocaleDateString(currentLanguage, dateOptions);

    function showDate() {

      var dateOptions = {
        weekday: "long",
        year: "numeric",
        month: "long",
        day: "numeric"
      };
      var selectedDate = $("#datepicker").datepicker("getDate");
      var dt = new Date(selectedDate);
             dt.setDate( dt.getDate() - 1 );
      var currentLanguage = $("#language option:selected").val();
      var dateClass = document.getElementsByClassName("date");
      for (var i = 0; i < dateClass.length; i++) {
        dateClass[i].innerHTML = dt.toLocaleDateString(currentLanguage, dateOptions);
      }
    }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...