首页 > 解决方案 > 针对 javascript 中的多种格式验证日期

问题描述

我有几种我们接受的日期格式。

const dateFormats =['yyyy-MM-ddTHH:mm:ss.SSSZ','yyyy.MM.DD','MM.DD.yyyy','MM-DD-yyyy','yyyy/MM/DD','MM/DD/yyyy']

我想用这些格式验证传入日期?我如何在javascript中做到这一点?这是我正在尝试的:-

let isValid = dateFormats.some(dateFormat => {
  if(typeof val === 'string' && val.indexOf(' ') < 0)
    return moment(val, dateFormat, true).isValid()
  else return false
})

但它不工作

标签: javascriptmomentjs

解决方案


您可以将多种日期格式传递给moment

const val = new Date()

const dateFormats = ['yyyy-MM-ddTHH:mm:ss.SSSZ', 'yyyy.MM.DD', 'MM.DD.yyyy', 'MM-DD-yyyy', 'yyyy/MM/DD', 'MM/DD/yyyy']
const valid = moment(val, dateFormats, true).isValid()

console.log({ valid })
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js" integrity="sha512-qTXRIMyZIFb8iQcfjXWCO8+M5Tbc38Qi5WzdPOYZHIlZpzBHG3L3by84BBBOiRGiEb7KKtAOAs5qYdUiZiQNNQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>


推荐阅读