如何将 Yup date() 格式化为巴西格式?
How to format Yup date() to brazilian format?
我想使用 yup 来验证输入,该输入被用作生日。首先,我将简单的 .date() 函数添加到 yup 形状的对象,但它不接受巴西日期,因为格式与欧洲日期相同 (dd/MM/YYYY),我该如何继续?
使用.transform()
通过传递以下参数的函数解析您的值:
value
作为当前日期由是的解析。
originalValue
作为原始输入值(例如“01/01/2022”)。
yup.date().transform((value, originalValue) => {
// Do your parsing structure
return newValue
})
请记住,您的 newValue
必须是 Date
对象,因为您要验证表单中的 yup.date()
类型。
您可以使用此示例作为解决方案,将您的值解析为“dd/MM/YYYY”格式:
// Input: '10/12/2022'
// yup.object({ [...]
birthday: yup.date().transform((value, originalValue) => {
// originalValue = "10/12/2022"
try {
let date = originalValue.split('/')
// date = ["10", "12", "2022"] <- day, month and year respectively
if (date.length === 3) {
let newDate = `${date[2]}-${date[1]}-${date[0]}`
return new Date(newDate)
}
return null
} catch (e) {
return null
}
}),
// [...] })
// Expected Output: '2022-10-12T00:00:00.000Z'
See yup docs about parsing values using .transform()
: Yup Schema Basics - Parsing: Transforms
我想使用 yup 来验证输入,该输入被用作生日。首先,我将简单的 .date() 函数添加到 yup 形状的对象,但它不接受巴西日期,因为格式与欧洲日期相同 (dd/MM/YYYY),我该如何继续?
使用.transform()
通过传递以下参数的函数解析您的值:
value
作为当前日期由是的解析。originalValue
作为原始输入值(例如“01/01/2022”)。
yup.date().transform((value, originalValue) => {
// Do your parsing structure
return newValue
})
请记住,您的 newValue
必须是 Date
对象,因为您要验证表单中的 yup.date()
类型。
您可以使用此示例作为解决方案,将您的值解析为“dd/MM/YYYY”格式:
// Input: '10/12/2022'
// yup.object({ [...]
birthday: yup.date().transform((value, originalValue) => {
// originalValue = "10/12/2022"
try {
let date = originalValue.split('/')
// date = ["10", "12", "2022"] <- day, month and year respectively
if (date.length === 3) {
let newDate = `${date[2]}-${date[1]}-${date[0]}`
return new Date(newDate)
}
return null
} catch (e) {
return null
}
}),
// [...] })
// Expected Output: '2022-10-12T00:00:00.000Z'
See yup docs about parsing values using
.transform()
: Yup Schema Basics - Parsing: Transforms