Проверьте, является ли строка датой или не использует Moment.js - PullRequest
0 голосов
/ 30 мая 2019

Итак, рассмотрим следующий объект:

Вы можете подумать, что самый простой способ - это зациклить объект, проверить, является ли каждое свойстводействительный.как вы можете видеть, у нас есть один объект даты в этом объекте.Но обратите внимание на это clinic_id.

Вот мой код, чтобы сделать то, что я упомянул выше:

  for(let property in formData) {
    let date = moment(formData[property]).isValid()

    if (date) {
      formData[property] = moment(formData[property]).format('YYYY-MM-DD');
    }
  }

Вы могли бы подумать, что это может сработать, черт возьми, вы даже можете предложить просматривать циклчтобы узнать, что скажет .getDate() для каждого свойства, за исключением того, что .getDate() выдаст ошибку для всего, что не является объектом даты.

Так что же выводит код, приведенный выше:

Единственное, что здесь должно быть значением даты, это date_of_consent, а не clinic_id.Я понимаю, почему момент преобразовал его в дату, но это не должно было произойти.

У меня будут объекты, в которых есть объекты даты, есть ли способ найти объект даты в объекте?и заменить его на moment.js отформатированный?

1 Ответ

1 голос
/ 30 мая 2019

Вы можете проверить, есть ли у вас Date объекты несколькими способами.

Вы можете проверить экземпляр каждого элемента, чтобы проверить, является ли он датой:

if (formData[property] instanceof Date) // returns true or false

Вы также можете проверить, существует ли функция .getDate():

typeof (formData[property]).getDate === 'function'

Или попробуйте получить значение и отловить возможную ошибку:

try {
    var date = formData[property].getDate();
    /* Do your formatting */
} catch (e) {
    //This was not a Date object
}
...