我怎样才能正确验证日期?

How could I validate dates correctly?

我正在使用 celebrate 来验证日期,但我仍然可以添加比 end_date 更高的 start_date,我可以做些什么来防止这种行为?同样使用这样的格式 returns 出现以下错误:

Unknown date format YYYY-MM-DD

我怎样才能使用所需的格式?

routes.post(
  '/world_series',
  celebrate({
    [Segments.BODY]: Joi.object().keys({
      start_date: Joi.date().required(),
      end_date: Joi.date().format('YYYY-MM-DD').greater(Joi.ref('start_date')).required(),
      champion_id: Joi.string().required(),
      runners_up_id: Joi.string().required(),
    }),
  }),
  WorldSeriesController.create
);

阅读文档后我发现我可以使用规则集来解决我的问题,这里是代码:

routes.post(
  '/world_series',
  celebrate({
    [Segments.BODY]: Joi.object().keys({
      start_date: Joi.date().required(),
      end_date: Joi.date()
        .ruleset.greater(Joi.ref('start_date'))
        .rule({ message: 'end_date must be greater than start_date' })
        .required(),
      champion_id: Joi.string().required(),
      runners_up_id: Joi.string().required(),
    }),
  }),
  WorldSeriesController.create
);