Javascript / Машинопись: сравнение переменных даты, строки и момента - PullRequest
1 голос
/ 02 августа 2020

Я сравниваю две переменные даты.

По какой-то причине, от C# API до Javascript, они иногда конвертируются как 1) string или 2) Date или даже 3) Moment из-за предыдущей балансовой единицы.

В машинописном тексте указано, что они Date в интерфейсе ниже, но в Javascript времени выполнения это изменяется.

Итак, теперь, при сравнении двух дат, есть ли простой способ упростить код ниже? Преобразование всего в дату и проведение сравнения getTime().

export interface Product {
    productName?: string;
    recordDate?: Date;
}

if (product1.recordDate instanceof Date) {
    dateVar1 = product1.recordDate;
} else if (typeof product1.recordDate === 'string') || product1.recordDate instanceof String)) {
    dateVar1 = new Date(product1.recordDate);
} else if (product1.recordDate instanceof moment) {
    dateVar1 = ((product1.recordDate as any) as moment.Moment).toDate();
}

if (product2.recordDate instanceof Date) {
    date2Var = product2.recordDate;
} else if (typeof product2.recordDate === 'string') || product2.recordDate instanceof String)) {
    date2Var = new Date(product2.recordDate);
} else if (product2.recordDate instanceof moment) {
    date2Var = ((product2.recordDate as any) as moment.Moment).toDate();
}


if date1Var.getTime() === date2Var.getTime() {
  return true;
} else {
  return false;
}

с использованием среды Angular,

Ресурсы:

Преобразование строки в дату в JavaScript

1 Ответ

1 голос
/ 02 августа 2020

Вы можете использовать Moment. Просто передайте string или Date или Moment значение:

dateVar1 = moment(product1.recordDate).toDate();

Рабочий пример

const stringDate = "2020-08-01";  // string
const dateDate = new Date();      // Date
const momentDate = moment();      // Moment

console.log(moment(stringDate).toDate());
console.log(moment(dateDate).toDate());
console.log(moment(momentDate).toDate());
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.27.0/moment.min.js"></script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...