使用 Joi 的 date() 方法创建日期 schema,然后使用 moment.js 库将日期解析为指定时区的时间戳进行验证。
示例代码如下:
const Joi = require('joi');
const moment = require('moment');
const schema = Joi.date().required().raw();
const validateDate = (dateString, format, timezone) => {
const date = moment.tz(dateString, format, timezone);
const { error, value } = schema.validate(date, { convert: false });
return { error, value };
};
// 示例验证
const { error, value } = validateDate('2022-12-31 23:59:59', 'YYYY-MM-DD HH:mm:ss', 'Asia/Shanghai');
if (error) {
console.error(error);
} else {
console.log(value);
}
在示例中,我们创建了一个名为 schema 的 Joi 日期 schema 对象,然后使用 moment.js 库将输入的日期时间解析为指定时区的日期时间。最后,我们使用 Joi 的 validate 方法验证日期是否符合 schema,其中 convert: false 参数确保不会将日期转换为 UTC 格式。
注意:在使用 moment.js 进行日期解析时,需要确保指定正确的日期时间格式和时区。