#javascript #typescript
Вопрос:
Поэтому я пытаюсь понять, как сравнить две даты в машинописном тексте. У меня есть введенная пользователем дата:
const oldestDateString = this.address[0].since '-01';
const oldestDate = new Date(oldestDateString);
И дата, которая произошла три года назад (36 месяцев):
const threeYearsAgo = new Date().setMonth(new Date().getMonth() - 36);
Поэтому я иду, чтобы сравнить их, как показано ниже:
if (oldestDate >= threeYearsAgo) {
// Do Something
}
Но я получаю ошибку при сравнении:
Operator '<' cannot be applied to types 'Date' and 'number'.
Чего я не понимаю, так это почему один из них-это номер, конечно, они оба должны быть датами? Есть ли какой-нибудь способ сравнить эти два или вывести их в соответствующем формате? Это не обязательно должно быть решение для машинописи, я не возражаю даже против использования vanilla JS.
Я просто не хочу использовать MomentJS, так как эта конкретная функция в moment, похоже, не работает на некоторых iPhone.
Старый скрипт MomentJS для справки:
const oldestDate = this.address[0].since '-01';
const months = moment().diff(moment(oldestDate), 'month', true);
if (months >= 36) {
return true;
} else {
return false;
}
Комментарии:
1.
const threeYearsAgo = new Date();threeYearsAgo.setMonth(new Date().getMonth() - 36);
вы получаете число, потомуsetMonth
что возвращает число
Ответ №1:
setMonth
возвращает номер, а не дату. ТС придирчив к этому. Вместо этого сравните дату, на которую вы вызвали эту функцию set.
const threeYearsAgo = new Date();
threeYearsAgo.setMonth(new Date().getMonth() - 36);
Комментарии:
1. Это работает на рабочем столе, но по какой-то причине не на iPhone
Ответ №2:
Это потому , что вы сохраняете не дату threeYearsAgo
, а возвращаемое значение setMonth
.
Возвращаемое значение
Количество миллисекунд между 00:00:00 UTC 1 января 1970 года и обновленной датой.
Итак, вы хотите
const threeYearsAgo = new Date();
threeYearsAgo.setMonth(new Date().getMonth() - 36)
Комментарии:
1. Это работает на рабочем столе, но по какой-то причине не на iPhone
2. Просто протестировал его в Safari на iOS 12, и он отлично работает. Скорее всего, это что-то другое. Какую ошибку вы получаете на iPhone?
3. Я предполагаю, что это либо что-то связано с настройками компиляции ts , либо с использованием
this.address
, посколькуthis
часто может быть странным