function __toString() { $minutes = array(); $minute = 0; while ($minute < 60) { $minutes[] = $minute; $minute += $this->minute_interval; } $hours = array(); foreach (range(0, 23) as $hour) { foreach ($minutes as $minute) { $hours[str_pad($hour, 2, '0', STR_PAD_LEFT) . ':' . str_pad($minute, 2, '0', STR_PAD_LEFT)] = $hour . ':' . str_pad($minute, 2, '0', STR_PAD_LEFT); } } $this->dropdown->setDataSource($hours); $value = $this->dropdown->getValue(); if ($value) { $parts = explode(':', $value); $min_distance = 60; $approx_min = 0; foreach ($minutes as $minute) { if ($min_distance > abs($parts[1] - $minute)) { $min_distance = abs($parts[1] - $minute); $approx_min = $minute; } } if ($min_distance > 60 - $parts[1]) { $approx_min = 0; $parts[0] = str_pad(($parts[0] + 1) % 24, 2, '0', STR_PAD_LEFT); } $this->dropdown->setValue($parts[0] . ':' . str_pad($approx_min, 2, '0', STR_PAD_LEFT)); } return '<div class="form_input_datetime">' . $this->date_picker->__toString() . $this->dropdown->__toString() . '</div>'; }