<?php
/**
* Checks date constraints for data migration.
*
* @param string $date_string The date string to validate (e.g., 'YYYY-MM-DD').
* @param string $format The expected date format (e.g., 'Y-m-d').
* @param int|null $min_date Optional minimum date for validation.
* @param int|null $max_date Optional maximum date for validation.
* @return bool True if the date is valid and within the specified range, false otherwise.
*/
function validateDate(string $date_string, string $format, ?int $min_date = null, ?int $max_date = null): bool
{
// Attempt to create a DateTime object
$dateTime = DateTime::createFromFormat($format, $date_string);
// Check if the date is valid
if ($dateTime === false) {
return false; // Invalid date format
}
// If min_date is specified
if ($min_date !== null && $dateTime < new DateTime($min_date)) {
return false; // Date is before the minimum date
}
// If max_date is specified
if ($max_date !== null && $dateTime > new DateTime($max_date)) {
return false; // Date is after the maximum date
}
return true; // Date is valid and within range
}
//Example usage
/*
$date = '2023-10-27';
$format = 'Y-m-d';
$minDate = 20230101;
$maxDate = 20231231;
if (validateDate($date, $format, $minDate, $maxDate)) {
echo "Date is valid.\n";
} else {
echo "Date is invalid.\n";
}
*/
?>
Add your comment