首页 > 解决方案 > Yup.date() 验证后将日期转换为没有时区的字符串

问题描述

我将 Yup 与 react-hook-form 一起使用,并且在 Yup 中具有以下架构

  const validationSchema = Yup.object({
    installation: Yup.string().nullable().required("Required"),
    from_date: Yup.date()
      .max(new Date(), "Cannot use future date")
      .nullable()
      .required("Required"),
    to_date: Yup.date()
      .min(Yup.ref("from_date"), "To Date cannot be before From Date")
      .max(new Date(), "Cannot use future date")
      .nullable()
      .required("Required")
  });

当我在输入中键入日期时,验证工作正常,但日期以 格式返回2021-03-31T18:30:00.000Z,但是我希望日期以2021-03-31.

我将数据发送到 Django 后端服务器,它只需要一个没有时区的 DateField。我该怎么做?

有没有办法在没有时区的情况下转换日期。如果我改用它,我可以让它工作Yup.string(),但是必要的验证将不起作用。

可能的解决方案想法(但需要帮助才能理解如何做到这一点)

我可以在 Yup 中编写一些自定义验证吗?如果这是可能的,那么我可以使用Yup.string()并仍然执行必要的验证

  1. 利用Yup.string()
  2. 转换为日期
  3. 执行必要的验证
  4. 将日期重新转换为字符串
  5. 并返回字符串

PS这个问题有很多观点,但没有重要的评论或答案。我可以更改问题格式以使其更易于理解吗?

标签: javascriptreactjsyupreact-hook-form

解决方案


推荐阅读