protected static function _set_date_value(Date $date, $value) { if (!$value) { $date->set_unix_time(time()); } else { if (is_object($value) && ClassHelper::is_instance_of($value, 'DateTime')) { $date->set_unix_time($value->getTimestamp()); } else { if (is_object($value) && ClassHelper::is_instance_of($value, 'Date')) { $date->set_year($value->_year, false); $date->set_month($value->_month, false); $date->set_day($value->_day, false); $date->set_hour($value->_hour, false); $date->set_minutes($value->_min, false); $date->set_seconds($value->_secs, false); } else { $value = trim($value); if (is_array($value)) { if (array_keys($value, 'year')) { $date->set_year($value['year'], false); } if (array_keys($value, 'month')) { $date->set_month($value['month'], false); } if (array_keys($value, 'day')) { $date->set_day($value['day'], false); } if (array_keys($value, 'hour')) { $date->set_hour($value['hour'], false); } if (array_keys($value, 'minutes')) { $date->set_minutes($value['minutes'], false); } if (array_keys($value, 'seconds')) { $date->set_seconds($value['seconds'], false); } } else { if (preg_match('#^\\d{4}$#', $value)) { $date->set_year($value, false); } else { if (preg_match('#^\\d{5,}$#', $value)) { $date->set_unix_time($value); } else { if (preg_match(self::$_sql_pattern, $value, $match)) { $date->set_year($match['year'], false); $date->set_month($match['month'], false); $date->set_day($match['day'], false); if (isset($match['hour'])) { $date->set_hour($match['hour'], false); $date->set_minutes($match['minutes'], false); if (isset($match['seconds'])) { $date->set_seconds($match['seconds'], false); } } } else { if (preg_match(self::_format_to_pattern(self::get_default_format_datetime_secs()), $value, $match)) { $date->set_year($match['year'], false); $date->set_month($match['month'], false); $date->set_day($match['day'], false); $date->set_hour($match['hour'], false); $date->set_minutes($match['minutes'], false); $date->set_seconds($match['seconds'], false); } else { if (preg_match(self::_format_to_pattern(self::get_default_format_datetime()), $value, $match)) { $date->set_year($match['year'], false); $date->set_month($match['month'], false); $date->set_day($match['day'], false); $date->set_hour($match['hour'], false); $date->set_minutes($match['minutes'], false); } else { if (preg_match(self::_format_to_pattern(self::get_default_format_date()), $value, $match)) { $date->set_year($match['year'], false); $date->set_month($match['month'], false); $date->set_day($match['day'], false); } else { $no_spaces_value = str_replace(' ', '', $value); if ($no_spaces_value != $value) { return self::_set_date_value($date, $no_spaces_value); } } } } } } } } } } } $date->validate(); }