info = new FieldInfo("datetime", "Datetime", FieldType::STRING); } public function format(array $input, array $output): array { $value = $input[$this->name] ?? null; if (empty($value)) { $newValue = (new Nullable($this->nullable, null, ""))->value(); } else { $date = Carbon::parse($value); $dateFormatted = $date->toJSON(); $newValue = (new Nullable($this->nullable, $dateFormatted, ""))->value(); } $output[$this->name] = $newValue; return $output; } public function failRequired(mixed $value): bool { return empty(trim($value)); } public function failMin(mixed $value): bool { if (empty($this->value)) { return false; } return $value->lessThanOrEqualTo($this->min); } public function failMax(mixed $value): bool { if (empty($this->value)) { return false; } return $value->greaterThan($this->max); } }