for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace Kontrolio\Rules\Core;
use DateTime as PhpDateTime;
use Kontrolio\Rules\AbstractRule;
/**
* Date and time validation rule.
*
* @package Kontrolio\Rules\Core
*/
class DateTime extends AbstractRule
{
const PATTERN = '/^(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})$/';
const FORMAT = 'Y-m-d H:i:s';
* Validates input.
* @param mixed $input
* @return bool
public function isValid($input = null)
if ($input === null || $input === '') {
return false;
}
$input = (string) $input;
PhpDateTime::createFromFormat(static::FORMAT, $input);
$errors = PhpDateTime::getLastErrors();
if ($errors === false) {
return true;
if ($errors['error_count'] > 0) {
$this->violations[] = 'format';
foreach ($errors['warnings'] as $warning) {
if ($warning === 'The parsed date was invalid') {
$this->violations[] = 'date';
} elseif ($warning === 'The parsed time was invalid') {
$this->violations[] = 'time';
} else {
return !$this->hasViolations();