mirror of
https://github.com/Respect/Validation.git
synced 2026-03-14 22:35:45 +01:00
We don't often change the tempaltes of validators, but when we do it's extremely important that the documentation of the validators match the exact template the validator has.
4.6 KiB
4.6 KiB
DateTimeDiff
DateTimeDiff("years"|"months"|"days"|"hours"|"minutes"|"seconds"|"microseconds" $type, Validator $validator)DateTimeDiff("years"|"months"|"days"|"hours"|"minutes"|"seconds"|"microseconds" $type, Validator $validator, string $format)DateTimeDiff("years"|"months"|"days"|"hours"|"minutes"|"seconds"|"microseconds" $type, Validator $validator, string $format, DateTimeImmutable $now)
Validates the difference of date/time against a specific validator.
The $format argument should follow PHP's date() function. When the $format is not given, this validator accepts
Supported Date and Time Formats by PHP (see strtotime()).
v::dateTimeDiff('years', v::equals(7))->isValid('7 years ago'); // true
v::dateTimeDiff('years', v::equals(7))->isValid('7 years ago + 1 minute'); // false
v::dateTimeDiff('years', v::greaterThan(18), 'd/m/Y')->isValid('09/12/1990'); // true
v::dateTimeDiff('years', v::greaterThan(18), 'd/m/Y')->isValid('09/12/2023'); // false
v::dateTimeDiff('months', v::between(1, 18))->isValid('5 months ago'); // true
The supported types are:
yearsmonthsdayshoursminutessecondsmicroseconds
Templates
DateTimeDiff::TEMPLATE_STANDARD
Used when $format and $now are not defined.
| Mode | Template |
|---|---|
default |
The number of {{type|trans}} between now and |
inverted |
The number of {{type|trans}} between now and |
DateTimeDiff::TEMPLATE_CUSTOMIZED
Used when $format or $now are defined.
| Mode | Template |
|---|---|
default |
The number of {{type|trans}} between {{now}} and |
inverted |
The number of {{type|trans}} between {{now}} and |
DateTimeDiff::TEMPLATE_NOT_A_DATE
| Mode | Template |
|---|---|
default |
For comparison with {{now|raw}}, {{subject}} must be a valid datetime |
inverted |
For comparison with {{now|raw}}, {{subject}} must not be a valid datetime |
DateTimeDiff::TEMPLATE_WRONG_FORMAT
Used when the input cannot be parsed with the given format.
| Mode | Template |
|---|---|
default |
For comparison with {{now|raw}}, {{subject}} must be a valid datetime in the format {{sample|raw}} |
inverted |
For comparison with {{now|raw}}, {{subject}} must not be a valid datetime in the format {{sample|raw}} |
Template as prefix
The template serves as a prefix to the template of the inner validator.
v::dateTimeDiff('years', v::equals(2))->assert('1 year ago')
// The number of years between now and 1 year ago must be equal to 2
v::not(v::dateTimeDiff('years', v::lessThan(8)))->assert('7 year ago')
// The number of years between now and 7 year ago must not be less than 8
Template placeholders
| Placeholder | Description |
|---|---|
subject |
The validated input or the custom validator name (if specified). |
now |
The date and time that is considered as now. |
sample |
A sample of the datetime. |
type |
The type of interval (years, months, etc.). |
Caveats
When using custom templates, the key must be dateTimeDiff + name of the validator you passed, for example:
v::dateTimeDiff('years', v::equals(2))->assert('1 year ago', [
'dateTimeDiffEquals' => 'Please enter a date that is 2 years ago'
]);
// Please enter a date that is 2 years ago.
Categorization
- Date and Time
Changelog
| Version | Description |
|---|---|
| 3.0.0 | Created from Age, MinAge, and MaxAge |
See also: