Сравните c# datetime на стороне клиента - PullRequest
1 голос
/ 29 апреля 2020

я использую asp. net mvc c#, я в моем примере мне нужно, чтобы пользователь ввел дату, и я проверю, если дата, которую этот пользователь ввел, находится между датой от даты и датой что я прочитал его из базы данных, тогда я отправлю форму, иначе должно появиться предупреждение.

мой вид бритвы

  @foreach (var obj in Model)
    {
       <tr data-myLoop="loop">
          <td data-date="date"> @Html.DatePicker("myList[" + index + "].UserDate", 
           obj.InterviewDate) </td>

          <td class="hidden" data-fromDate="fromDate">
                @Html.Hidden("myList[" + index + "].FromDate", obj.FromDate)
          </td>
          <td class="hidden" data-toDate="toDate">
                 @Html.Hidden("myList[" + index + "].toDate", obj.toDate)
           </td> 
       </tr>

        index++;
    }

в java скрипт:

$("[data-myLoop='loop']").each(function () {

var fromDate= $(this).find('[data-fromDate="fromDate"]').find('input[type="hidden"]').val();
var ToDate= $(this).find('[data-toDate="toDate"]').find('input[type="hidden"]').val();
var userDate = $(this).find('[data-date="date"]').datepicker('getDate');

if(userDate < fromDate || userDate > ToDate)
    alert("not in range");



});

Но это сравнение не всегда дает ожидаемый результат. я думаю, потому что тип fromDate и toDate это строка в javascript не дата.

Как я могу решить эту проблему?

1 Ответ

1 голос
/ 29 апреля 2020

Вы можете преобразовать все строковые даты в Date объект, сначала используя конструктор new Date(string) перед сравнением, например:

var fromDate = new Date($(this).find('[data-fromDate="fromDate"]').find('input[type="hidden"]').val());
var ToDate = new Date($(this).find('[data-toDate="toDate"]').find('input[type="hidden"]').val());
var userDate = $(this).find('[data-date="date"]').datepicker('getDate');

if (userDate < fromDate || userDate > ToDate)
   alert("not in range");

Кроме того, .datepicker('getDate') уже возвращает Date object, поэтому нам не нужно снова преобразовывать это в Date объект здесь.

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