Date Rules
Date validation rules check date formats and date comparisons.
Rules Reference
Section titled “Rules Reference”| Rule | Parameters | Example | Error Message |
|---|---|---|---|
date | — | $v->rule('date', 'field') | {field} is not a valid date |
dateFormat | format | $v->rule('dateFormat', 'field', 'Y-m-d') | {field} must be a valid date in the format {0} |
dateBefore | date | $v->rule('dateBefore', 'field', '2024-12-31') | {field} must be a date before {0} |
dateAfter | date | $v->rule('dateAfter', 'field', '2024-01-01') | {field} must be a date after {0} |
past | reference? | $v->rule('past', 'field') | {field} must be a date in the past |
future | reference? | $v->rule('future', 'field') | {field} must be a date in the future |
Note: Parameters marked with
?are optional.
Accepted date formats: DateTime objects, ISO 8601 (2024-01-15), common formats (01/15/2024), Unix timestamps, anything parseable by strtotime().
Common format strings:
| Format | Example |
|---|---|
Y-m-d | 2024-01-15 |
d/m/Y | 15/01/2024 |
m/d/Y | 01/15/2024 |
Y-m-d H:i:s | 2024-01-15 14:30:00 |
Security: past and future reject relative strings like +1 week or tomorrow.
Complete Examples
Section titled “Complete Examples”Valicomb supports two syntax styles: rule-based (map rules to fields) and field-based (map fields to rules).
Rule-Based Array Syntax
Section titled “Rule-Based Array Syntax”use Frostybee\Valicomb\Validator;
$v = new Validator($data);
$v->rules([ 'date' => [ ['birth_date'], ['hire_date'] ], 'dateFormat' => [ ['birth_date', 'Y-m-d'], ['event_time', 'Y-m-d H:i:s'] ], 'dateBefore' => [ ['birth_date', '2010-01-01'], ['start_date', '2025-12-31'] ], 'dateAfter' => [ ['end_date', '2024-01-01'], ['hire_date', '2000-01-01'] ], 'past' => [ ['birth_date'], ['graduation_date'] ], 'future' => [ ['appointment_date'], ['delivery_date'] ]]);
$v->validate();Field-Based Mapping
Section titled “Field-Based Mapping”use Frostybee\Valicomb\Validator;
$v = new Validator($data);
$v->mapManyFieldsToRules([ 'birth_date' => ['required', 'date', ['dateFormat', 'Y-m-d'], 'past'], 'start_date' => ['required', 'date', ['dateBefore', '2025-12-31']], 'end_date' => ['required', 'date', ['dateAfter', '2024-01-01']], 'appointment_date' => ['required', 'date', 'future'], 'event_datetime' => ['optional', ['dateFormat', 'Y-m-d H:i:s']], 'graduation_date' => ['optional', 'date', 'past']]);
$v->validate();