Provides a Joi rule to validate IANA timezone strings using moment-timezone
This project is no longer being maintained by SafetyCulture. You are welome to fork this project and bring new life to it.
https://github.com/tjdavey/joi-tz is an active version of this project.
Note: requires Joi version >= 9
import BaseJoi from 'joi';
import JoiTimezone from 'joi-timezone';
const Joi = BaseJoi.extend(JoiTimezone);
// Create a joi schema using the timezone validator;
const schema = Joi.string().timezone();
Results with valid timezone:
Joi.validate("Melbourne/Australia", Joi.string().timezone());
/*
{
error: null,
value: "Melbourne/Australia"
}
*/
Results with valid timezone returning a moment object:
Joi.validate("Melbourne/Australia", Joi.string().timezone({returnMoment: true}));
/*
{
error: null,
value: {
...moment object
}
}
*/
Results with invalid timezone:
Joi.validate("Some rubbish", Joi.string().timezone());
/*
{ error: {
[ValidationError: "value" timezone failure]
isJoi: true,
name: 'ValidationError',
details: [{
message: '"value" timezone failure',
path: 'value',
type: 'string.timezone',
context: { v: 'Some rubbish', key: 'value' }
}],
...
},
value: 'Some rubbish'
}
*/