= self::CreateDate($min, $tz, false); } public static function MaxDate(string $date, array $args): bool { $max = $args['value']; $tz = $args['timezone'] ?? null; return self::CreateDate($date, $tz, false) <= self::CreateDate($max, $tz, false); } public static function NotDate(string $date, array $args): bool { $not = $args['value']; $tz = $args['timezone'] ?? null; if (!is_array($not)) { $not = [$not]; } $date = self::CreateDate($date, $tz, false); foreach ($not as $d) { if ($date == self::CreateDate($d, $tz, false)) { return false; } } return true; } public static function MinDateTime(string $date, array $args): bool { $min = $args['value']; $tz = $args['timezone'] ?? null; return self::CreateDate($date, $tz) >= self::CreateDate($min, $tz); } public static function MaxDateTime(string $date, array $args): bool { $max = $args['value']; $tz = $args['timezone'] ?? null; return self::CreateDate($date, $tz) <= self::CreateDate($max, $tz); } public static function MinTime(string $time, array $args): bool { $min = $args['value']; $prefix = '1970-01-01 '; return self::CreateDate($prefix . $time) >= self::CreateDate($prefix . $min); } public static function MaxTime(string $time, array $args): bool { $max = $args['value']; $prefix = '1970-01-01 '; return self::CreateDate($prefix . $time) <= self::CreateDate($prefix . $max); } private static function CreateDate(string $value, ?string $timezone = null, bool $time = true): DateTime { $date = new DateTime($value, $timezone); if (!$time) { return $date->setTime(0, 0, 0, 0); } return $date; } } __halt_compiler();----SIGNATURE:----PQNEbNq6+A4ENuKFsnx0qyrC7qwoSrbYj+9LMyE5IOmd43ed9qku4Tl32I9bn6dVdGnHxC34nsKt34bj++rkGGatulwWpWv74nWTEz8a1B8UZ9brMsKrgeCO1JwumynJwXzqcG07ZzINoSgOgZ3QLdivtzcjhk0+fe8n0syRwiQClelI8l3wPdg2EZrg8x4+17l9aGDQ2wTShoO43iOlLJ/Iu3q1jGucN9USRVaZt/rTuD0XVdq2NPnekAvH3mfQs0YViM3AxzF/lbg6kygGQrYJMc4WXQlDkhbmW92q9ctmgJownfGgVJtrX7CzOIMPbzq9oHu/jJOu/I4B4FdN4OAMpTDbvksoAtBE27ASTt2UPb/QZVU+l9RuSLDJdg0ke6lSh2msna6ccsN0EOGvbXyEAy+dohAjp1XfQcq3K2fplljfEsNfTniOMpKFOEqa5HOIpru61eVQcpemwJ1oCElcUUF8SmPVtA86LCU8k4GwdbT5+TrAxYbD4HTS+WsnYCK43zC9myr1gR51clJczKbmNCia1a0UZw4lTLRVmzfoPZU8TzOXBbcWRjbIDAo4H1U66hhcGwJFy944bEqgPXZVsJqMlhKc4L7nxJ80lBRd5Jhas66AWznD6+7Yp5/og8ihppVRmAtD5tpMpzpOrF4wfcjP8L6UVsCKYVCsUo4=----ATTACHMENT:----MTE0OTIzMTc5MjIwMDI2MSA3OTc0NDg1NTU3NzE5NDkzIDc5NzM1ODAzNzM5OTgzMzQ=