Move is_a_date_arg to DateTimeFormat::isYearMonth

- Improved functionality
- Added tests
This commit is contained in:
Philipp Holzer 2019-10-23 02:39:28 +02:00
parent 52c42491c4
commit ad67fd3aa8
No known key found for this signature in database
GPG key ID: D8365C3D36B77D90
5 changed files with 107 additions and 22 deletions

View file

@ -148,4 +148,37 @@ class DateTimeFormat
return $d->format($format);
}
/**
* Checks, if the given string is a date with the pattern YYYY-MM
*
* @param string $dateString The given date
*
* @return boolean True, if the date is a valid pattern
*/
public function isYearMonth(string $dateString)
{
// Check format (2019-01, 2019-1, 2019-10)
if (!preg_match('/^([12]\d{3}-(1[0-2]|0[1-9]|\d))$/', $dateString)) {
return false;
}
$date = DateTime::createFromFormat('Y-m', $dateString);
if (!$date) {
return false;
}
try {
$now = new DateTime();
} catch (\Throwable $t) {
return false;
}
if ($date > $now) {
return false;
}
return true;
}
}