$dateInput = $this->filter([
'date' => 'datetime',
'time' => 'str',
]);
$form->setup(function() use ($dateInput, $download)
{
$language = \XF::language();
$dateTime = new \DateTime('@' . $dateInput['date'], $language->getTimeZone());
if (!$dateInput['time'] OR strpos($dateInput['time'], ':') === false)
{
// We didn't have a valid time string
$hours = $language->date($download->release_date, 'H');
$minutes = $language->date($download->release_date, 'i');
}
else
{
list($hours, $minutes) = explode(':', $dateInput['time']);
// Sanitise hours and minutes to a maximum of 23:59
$hours = min(intval($hours), 23);
$minutes = min(intval($minutes), 59);
}
// Finally set it
$dateTime->setTime($hours, $minutes);
$download->release_date = $dateTime->getTimestamp();
});