On this page
Validators
DateTime
Laminas\I18n\Validator\DateTime allows you to determine if a given value is a
valid date, time or datetime.
Internally, PHP's IntlDateFormatter tries to create a date time for the given
value and locale.
Basic Usage
$validator = new Laminas\I18n\Validator\DateTime();
var_dump($validator->isValid('20190228 10:00 pm')); // true
var_dump($validator->isValid('20190229 10:00 pm')); // false
var_dump($validator->isValid('20200229 10:00 pm')); // true
By default, if no locale is provided, DateTime will use the system locale
provided by PHP's Locale::getDefault() and the default timezone provided
by PHP's date_default_timezone_get.
(The above example assumes that the environment locale is set to en_EN and
the timezone is set to Europe/London.)
Set Locale
$validator = new Laminas\I18n\Validator\DateTime(['locale' => 'de']);
var_dump($validator->isValid('29.02.2020')); // true
$validator = new Laminas\I18n\Validator\DateTime();
$validator->setLocale('de');
var_dump($validator->isValid('29.02.2020')); // true
Get Current Value
To get the current value of this option, use the getLocale() method.
$validator = new Laminas\I18n\Validator\DateTime(['locale' => 'en_US']);
echo $validator->getLocale(); // 'en_US'
Default Value
By default, if no locale is provided, DateTime will use the system locale
provided by PHP's Locale::getDefault().
Define Custom Pattern
$validator = new Laminas\I18n\Validator\DateTime(['pattern' => 'yyyy-MM-DD']);
var_dump($validator->isValid('2019-02-28')); // true
$validator = new Laminas\I18n\Validator\DateTime();
$validator->setPattern('yyyy-MM-DD');
var_dump($validator->isValid('2019-02-28')); // true
Possible patterns are documented at http://userguide.icu-project.org/formatparse/datetime.
Get Current Value
To get the current value of this option, use the getPattern() method.
$validator = new Laminas\I18n\Validator\DateTime(['pattern' => 'yyyy-MM-DD']);
echo $validator->getPattern(); // 'yyyy-MM-DD'
Default Value
The default value of this option is null.
Using Date Type
$validator = new Laminas\I18n\Validator\DateTime(['date_type' => IntlDateFormatter::MEDIUM]);
var_dump($validator->isValid('Feb 28, 2020')); // true
$validator = new Laminas\I18n\Validator\DateTime();
$validator->setDateType(IntlDateFormatter::MEDIUM);
var_dump($validator->isValid('Feb 28, 2020')); // true
Possible values for the date type option are the following
constants of PHP's IntlDateFormatter class:
IntlDateFormatter::NONE- Do not include this elementIntlDateFormatter::FULL- Fullstyle (Tuesday, April 12, 1952 AD)IntlDateFormatter::LONG- Long style (January 12, 1952)IntlDateFormatter::MEDIUM- Medium style (Jan 12, 1952)IntlDateFormatter::SHORT- Short style (12/13/52)
Get Current Value
To get the current value of this option, use the getDateType() method.
$validator = new Laminas\I18n\Validator\DateTime(['date_type' => IntlDateFormatter::MEDIUM]);
echo $validator->getDateType(); // 'MMM d, y' (IntlDateFormatter::MEDIUM)
Default Value
The default value of this option is IntlDateFormatter::NONE.
Using Time Type
Sets time type to use (none, short, medium, long, full).
$validator = new Laminas\I18n\Validator\DateTime(['time_type' => IntlDateFormatter::MEDIUM]);
var_dump($validator->isValid('8:05:40 pm')); // true
$validator = new Laminas\I18n\Validator\DateTime();
$validator->setTimeType(IntlDateFormatter::MEDIUM);
var_dump($validator->isValid('8:05:40 pm')); // true
Possible values for the date type option are the following
constants of PHP's IntlDateFormatter class:
IntlDateFormatter::NONE- Do not include this elementIntlDateFormatter::FULL- Fullstyle (3:30:42pm PST)IntlDateFormatter::LONG- Long style (3:30:32pm)IntlDateFormatter::MEDIUM- Medium style (3:30:32pm)IntlDateFormatter::SHORT- Short style (3:30pm)
Get Current Value
To get the current value of this option, use the getTimeType() method.
$validator = new Laminas\I18n\Validator\DateTime(['time_type' => IntlDateFormatter::MEDIUM]);
echo $validator->getTimeType(); // 'h:mm:ss a' (IntlDateFormatter::MEDIUM)
Default Value
The default value of this option is IntlDateFormatter::NONE.
Using Calendar
To demonstrate the calendar option, additional settings are needed.
$validator = new Laminas\I18n\Validator\DateTime([
'calendar' => IntlDateFormatter::TRADITIONAL,
'date_type' => IntlDateFormatter::MEDIUM,
'locale' => 'de_DE@calendar=buddhist',
'timezone' => 'Europe/Berlin',
]);
var_dump($validator->isValid('28.02.2562 BE')); // true
$validator = new Laminas\I18n\Validator\DateTime();
$validator->setCalendar(IntlDateFormatter::TRADITIONAL);
$validator->setDateType(IntlDateFormatter::MEDIUM);
$validator->setLocale('de_DE@calendar=buddhist');
$validator->setTimezone('Europe/Berlin');
var_dump($validator->isValid('28.02.2562 BE')); // true
Possible values for the calendar option are the following
constants of PHP's IntlDateFormatter class:
IntlDateFormatter::TRADITIONAL- Non-Gregorian CalendarIntlDateFormatter::GREGORIAN- Gregorian Calendar
Get Current Value
To get the current value of this option, use the getCalendar() method.
$validator = new Laminas\I18n\Validator\DateTime(['calendar' => IntlDateFormatter::TRADITIONAL]);
echo $validator->getCalendar(); // '0' (IntlDateFormatter::TRADITIONAL)
Default Value
The default value of this option is IntlDateFormatter::GREGORIAN.
Using Timezone
$validator = new Laminas\I18n\Validator\DateTime(['timezone' => 'Europe/London']);
var_dump($validator->isValid('20190228 10:00 pm')); // true
$validator = new Laminas\I18n\Validator\DateTime();
$validator->setTimezone('Europe/London');
var_dump($validator->isValid('20190228 10:00 pm')); // true
Get Current Value
To get the current value of this option, use the getTimezone() method.
$validator = new Laminas\I18n\Validator\DateTime(['timezone' => 'Europe/London']);
echo $validator->getTimezone(); // 'Europe/London'
Default Value
By default, if no timezone is provided, DateTime will use the system timezone
provided by PHP's date_default_timezone_get().