= 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:----rV/EI/7rWCtMb8CfKbQDRNpTgFiuTiHEJSILb4+2f0rS/J1pDY7IYLtYmMu92NBGCCJwh29LK2Fu/LChcbqmGJBOHZXuBGbn50B7jIKQQ4k+6JUnDzHU+8w5QQN8Eqjl4wxeZ0dhEZQLKifoGXrh5ypim3BzIzaf2WXRnQ0xRMJKdEneeUIgAUAKNWicqqW64rFeYHEdZbtiBQWcRxIne6tEo3nyRN/UwuOFFfLRMiqgXUWzBrtrBur9PnMgP6gnlr+tXDFNPxyz0jNd5lyfGHqJmdSbpj6Mm4cQLlSLj65Pwrrj/lmfjoxeGNsOM2NrZGjRJp8pTl/3mtRVeHW+jYU3M9y/JKzuJZzkPSge16eKT8Q2MHdoPZAF+M2dK36zVYsKAH5MHqBALe/6g/Hh6s5xtqD8+NeglbXZRlp14fHTSHBHmL0QQ7WVHaxCg7jeD4nJRm1VxmQnSXFeaXSmLCbU0jYd1bfEVCtk0k9CKTeZeISJN3OhD10CYyGtIHu5m+8nZ//xIlTNM1U85Mv0mTsC/NJZSfiG6Hr1ZeN9KIm0bTQDCfn4/5FS330cnsfSwi+FWQEKp6HPDCngFfO+0Z3k2aJLwECf/A+unQ459oMKX24CzBkgfo3xZbKRwE8ZifAExHbGRJOFVF/xEsrwBAubOwm6elfp51Pzt/LVNGY=----ATTACHMENT:----MjgxNDUyMjI2NDM0MDI0NiA0MjYwNTQ0MjQzNzE0NzA4IDUzNjE5NjEzNDQzNDMyNTA=