Как проверить, превышает ли время между двумя датами определенное количество месяцев? - PullRequest
1 голос
/ 28 января 2020

У меня есть приложение, в котором пользователь может выбрать две даты (от даты и до даты), и время между датами не должно превышать 4 месяца. Пользователь может выбрать день, месяц и год для каждой даты. Есть ли какая-то логика c, которую я мог бы использовать для достижения этой цели, чтобы возвращалась ошибка, если диапазон дат превышает 4 месяца. Каждый вход в виде целого числа. Например, дата начала 31 марта 2019 года будет: from_date_day = 31 from_date_month = 3 и from_date_year = 2019

Например, мне что-то вроде этого будет работать:

((Math.abs($('#to_date_month').val() - $('#from_date_month').val()) > 2) && $('#from_date_day').val() <= $('#to_date_day').val()
  return "error"

Проблема с этим кодом в том, что он не работает, когда даты колеблются между двумя разными годами. Я использую coffeescript, но решение в jquery или js также будет работать.

1 Ответ

1 голос
/ 28 января 2020

Я бы рекомендовал создать два Javascript Дата объектов из этих двух дат. Это можно сделать, указав год, месяц и, наконец, день для конструктора объекта Date.

например,

var startDate = new Date(2019, 1, 16); // January the 16th
var endDate = new Date(2019, 3, 30); // March the 30th

Используя функцию .getTime() объекта Date, который вы может получить количество миллисекунд, прошедших с 1.1.1970. Если вы вычислите разницу между этими двумя числами, оберните ее внутри Math.abs() и разделите это число на 1000, 60, 60 и, наконец, 24, вы получите количество дней. Если это число больше ~ 120, диапазон составляет более четырех месяцев.

console.log(Math.abs(startDate.getTime() - endDate.getTime()) / 1000/60/60/24);

В вашем случае объект Date может быть установлен следующим образом:

var startDate = new Date(parseInt($('#from_date_year').val()), parseInt($('#from_date_month').val()), parseInt($('#from_date_day').val()));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...