What does your form look like? Do you have some JavaScript or something on that? Because what I’m used to seeing with default code for time fields is an array with hour, minute and second separated.
This issue will be fixed in Cakephp 4.2. https://github.com/cakephp/cakephp/issues/14957
As a workaround you can reformat the time-data in a beforeMarshal-function in your model like this:
public function beforeMarshal(EventInterface $event, ArrayObject $data, ArrayObject $options)
{
if ($data['departuretime']) {
$data['departuretime'] = new FrozenTime($data['departuretime']);
}
}