使用Moment.js检查字符串是否为日期

时间:2019-05-30 15:46:41

标签: javascript momentjs

因此请考虑以下对象:

您可能在想,最简单的方法是在对象上循环,检查每个属性是否有效。如您所见,该对象中有一个日期对象。但是请注意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 个答案:

答案 0 :(得分:1)

您可以通过多种方式检查是否有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
}