public function jsDate($datestr) { $format = 'Y-m-d H:i:s'; $mdate = date_parse_from_format($format, $datestr); $jsDate = $mdate['year'] . "," . ($mdate['month'] - 1) . "," . $mdate['day'] . "," . $mdate['hour'] . "," . $mdate['minute'] . "," . $mdate['second']; return $jsDate; }
function dateArrayFromFMDate($d) { if ($d == '') { return ''; } $jYearStartDate = array('1989-1-8' => '平成', '1925-12-25' => '昭和', '1912-7-30' => '大正', '1868-1-25' => '明治'); $wStrArray = array('日', '月', '火', '水', '木', '金', '土'); $dateComp = date_parse_from_format('m/d/Y H:i:s', $d); $dt = new DateTime(); $dt->setDate($dateComp['year'], $dateComp['month'], $dateComp['day']); $dt->setTime($dateComp['hour'], $dateComp['minute'], $dateComp['second']); $gengoName = ''; $gengoYear = 0; foreach ($jYearStartDate as $startDate => $gengo) { $dtStart = new DateTime($startDate); $dinterval = $dt->diff($dtStart); if ($dinterval->invert == 1) { $gengoName = $gengo; $gengoYear = $dt->format('Y') - $dtStart->format('Y') + 1; $gengoYear = $gengoYear == 1 ? '元' : $gengoYear; break; } } return array('unixtime' => $dt->format('U'), 'year' => $dt->format('Y'), 'jyear' => $gengoName . $gengoYear . '年', 'month' => $dt->format('m'), 'day' => $dt->format('d'), 'hour' => $dt->format('H'), 'minute' => $dt->format('i'), 'second' => $dt->format('s'), 'weekdayName' => $wStrArray[$dt->format('w')], 'weekday' => $dt->format('w'), 'longdate' => $dt->format('Y/m/d'), 'jlongdate' => $gengoName . ' ' . $gengoYear . $dt->format(' 年 n 月 j 日 ') . $wStrArray[$dt->format('w')] . '曜日'); }
function downloadTvGuide($channel, $url) { global $DAYS; $i = 0; $result = array(); for ($n = 0; $n < $DAYS; $n++) { $date = date('Y-m-d', mktime(0, 0, 0, date('m'), date('d') + $n, date('Y'))); if ($n == 0) { $response = openUrl($url); } else { $response = openUrl($url . '/' . $date); } if (!preg_match_all('|CHANNEL = {(.*?)};|sm', $response, $matches)) { echo '[IPLA] Unable to produce whole EPG for channel ' . $channel . '!' . "\n"; return $result; } preg_match('|program: (.*?)\\};|sm', $matches[0][0], $details); $data = json_decode($details[1]); foreach ($data as $number => $program) { $hour = (int) $data[$number]->hour . ':' . $data[$number]->minute; $result[$i]['category'] = ''; $result[$i]['desc'] = strip_tags($data[$number]->description); $result[$i]['title'] = strip_tags($data[$number]->title); if (preg_match('|^[0-3]{1}:[0-9]{2}|', $hour, $tmp)) { $date = date('Y-m-d', mktime(0, 0, 0, date('m'), date('d') + $n + 1, date('Y'))); } $time = date_parse_from_format('Y-m-d H:i', $date . ' ' . $hour); $result[$i]['time'] = mktime($time['hour'], $time['minute'], 0, $time['month'], $time['day'], $time['year']); $i++; } } return $result; }
public function testParseDateFormat() { $arr = date_parse_from_format("d/m/Y", '01/01/2001'); $this->assertEquals(1, $arr['day']); $this->assertEquals(1, $arr['month']); $this->assertEquals(2001, $arr['year']); }
/** * @param string $date String representation of date. * @param string $format PHP date format. If not specified, the format is got from the current culture. * * @throws Main\ObjectException */ public function __construct($date = null, $format = null) { $this->value = new \DateTime(); if ($date !== null && $date !== "") { if ($format === null) { $format = static::getFormat(); } $parsedValue = date_parse_from_format($format, $date); //Ignore errors when format is longer than date //or date string is longer than format if ($parsedValue['error_count'] > 1) { if ( current($parsedValue['errors']) !== 'Trailing data' && current($parsedValue['errors']) !== 'Data missing' ) { throw new Main\ObjectException("Incorrect date: ".$date); } } $this->value->setDate($parsedValue['year'], $parsedValue['month'], $parsedValue['day']); } $this->value->setTime(0, 0, 0); }
public function statisticAction() { $id = $this->dispatcher->getParam('id'); $banner = Banners::findFirst($id); if ($id && $banner && $banner->advertiser_id == $this->auth->get_user()->id) { $this->assets->collection('bottom-js')->addJs('js/moment/moment.min.js')->addJs('js/moment/ru.js')->addJs('js/datetimepicker/js/bootstrap-datetimepicker.js'); $this->assets->collection('css')->addCss('js/datetimepicker/css/bootstrap-datetimepicker.min.css'); if (!$this->request->getQuery('start_date')) { if (!empty($banner->start_date)) { $start_date = $banner->start_date; } else { $first_view = $banner->views->getFirst()->date; if (!empty($first_view)) { $start_date = $first_view; } else { $start_date = 0; } } } else { $start_date = date_parse_from_format('d.m.Y H:i', $this->request->getQuery('start_date')); $start_date = mktime($start_date['hour'], $start_date['minute'], 0, $start_date['month'], $start_date['day'], $start_date['year']); } if (!$this->request->getQuery('end_date')) { if (!empty($banner->end_date)) { if ($banner->end_date > time()) { $end_date = time(); } else { $end_date = $banner->end_date; } } else { $end_date = time(); } } else { $end_date = date_parse_from_format('d.m.Y H:i', $this->request->getQuery('end_date')); $end_date = mktime($end_date['hour'], $end_date['minute'], 0, $end_date['month'], $end_date['day'], $end_date['year']); } $days = floor(($end_date + 10800) / 86400) - floor(($start_date + 10800) / 86400) + 1; $days_arr = []; if ($days > 0) { for ($i = 0; $i < $days; $i++) { $day = floor(($start_date + 10800) / 86400) * 86400 + $i * 86400 - 10800; if ((!empty($banner->start_date) ? $day >= floor(($banner->start_date + 10800) / 86400) * 86400 - 10800 : true) && $day < (!empty($banner->end_date) ? $banner->end_date : time())) { $days_arr[] = array('date' => $day, 'views' => $banner->countViews("date >= {$day} AND date < " . ($day + 86400)), 'clicks' => $banner->countViews("date >= {$day} AND date < " . ($day + 86400) . " AND clicked = 1")); } } } $this->view->days = $days_arr; $q = "date >= {$start_date} AND date <= {$end_date}"; $this->view->views = $banner->countViews(array($q)); $q .= " AND clicked = 1"; $this->view->clicks = $banner->countViews(array($q)); $this->view->start_date = $start_date; $this->view->end_date = $end_date; $this->view->banner = $banner; $this->view->title = "Статистика для баннера \"{$banner->name}\""; \Phalcon\Tag::prependTitle("Статистика для баннера \"{$banner->name}\""); } else { $this->dispatcher->forward(array("namespace" => 'App\\Controllers', "controller" => "error", "action" => "notFound")); } }
/** * Constructor * * @param null|string $date null: now, string: date or datetime string as UTC, int: unix timestamp * @param null|string|int|DateTimeZone $tz null: server offset, string: timezone string (e.g. UTC), int: offset in hours, DateTimeZone: PHP timezone * @param null|string $from Format to convert the date from * @param Config $config */ public function __construct($date = null, $tz = null, $from = null, Config $config) { $this->config = $config; $this->init(); if (!$date) { $date = 'now'; } if (!$tz) { $tz = Application::CBFramework()->getCfg('user_timezone'); } $tzCache = date_default_timezone_get(); date_default_timezone_set('UTC'); if (is_integer($date)) { $this->date = new DateTime(); $this->date->setTimestamp($date); } else { if ($date == 'now') { $from = null; } elseif (is_numeric($date)) { $date = date('c', $date); } if ($from) { $this->date = new DateTime(); $dateArray = date_parse_from_format($from, $date); $this->date->setDate($dateArray['year'], $dateArray['month'], $dateArray['day']); $this->date->setTime($dateArray['hour'], $dateArray['minute'], $dateArray['second']); } else { $this->date = new DateTime($date); } } date_default_timezone_set($tzCache); $this->setTimezone($tz); $this->from = $from; }
/** * Convert NHS dates to MySQL format. * Strings that do not match the NHS format are returned unchanged or are not valid dates. * * @param string|array $data Data containing one or more NHS dates * @param array $fields Fields (keys) to convert (optional, if empty then all fields are checked for dates) * @return string|array */ public static function convertNHS2MySQL($data, $fields = null) { if ($is_string = !is_array($data)) { $data = array('dummy' => $data); } $list = $fields ? $fields : array_keys($data); foreach ($list as $key) { if (isset($data[$key])) { // traverse down arrays to convert nested structures if (is_array($data[$key])) { $data[$key] = Helper::convertNHS2MySQL($data[$key], $fields); } elseif (is_string($data[$key]) && preg_match(self::NHS_DATE_REGEX, $data[$key])) { $check_date = date_parse_from_format('j M Y', $data[$key]); if (checkdate($check_date['month'], $check_date['day'], $check_date['year'])) { $data[$key] = date('Y-m-d', strtotime($data[$key])); } } } } if ($is_string) { return $data['dummy']; } else { return $data; } }
/** * @param string $time String representation of datetime. * @param string $format PHP datetime format. If not specified, the format is got from the current culture. * @param \DateTimeZone $timezone Optional timezone object. * * @throws Main\ObjectException */ public function __construct($time = null, $format = null, \DateTimeZone $timezone = null) { if ($timezone === null) { $this->value = new \DateTime(); } else { $this->value = new \DateTime(null, $timezone); } if ($time !== null && $time !== "") { if ($format === null) { $format = static::getFormat(); } $parsedValue = date_parse_from_format($format, $time); //Ignore errors when format is longer than date //or date string is longer than format if ($parsedValue['error_count'] > 1) { if (current($parsedValue['errors']) !== 'Trailing data' && current($parsedValue['errors']) !== 'Data missing') { throw new Main\ObjectException("Incorrect date/time: " . $time); } } $this->value->setDate($parsedValue['year'], $parsedValue['month'], $parsedValue['day']); $this->value->setTime($parsedValue['hour'], $parsedValue['minute'], $parsedValue['second']); if (isset($parsedValue["relative"]) && isset($parsedValue["relative"]["second"]) && $parsedValue["relative"]["second"] != 0) { $this->value->add(new \DateInterval("PT" . $parsedValue["relative"]["second"] . "S")); } } }
/** * Bootstrap any application services. * * @return void */ public function boot() { Validator::extend('hashed', function ($attribute, $value, $parameters) { // If we're already logged in if (Auth::check()) { $user = Auth::user(); } else { // Otherwise, try to get the username from form input $user = User::where('name', Input::get('name'))->get(); if (!$user->count()) { return false; } $user = $user[0]; } if (Hash::check($value, $user->password)) { return true; } return false; }); Validator::extend('time', function ($attribute, $value, $parameters) { $value = trim($value); // Check against 12 hour time (with AM/PM) or 24 hour time $twelve = date_parse_from_format('h:i a', $value); $twentyfour = date_parse_from_format('H:i', $value); if ($twelve['error_count'] === 0 || $twentyfour['error_count'] === 0) { return true; } return false; }); }
function procmsg($topic, $msg, $qos) { global $db; if ($topic == "sensor/cc3200/values") { $payload = json_decode($msg); if (!$payload) { return; } if (!isset($payload->hum) || !isset($payload->temp) || !isset($payload->time)) { return; } if (!is_numeric($payload->hum) || !is_numeric($payload->temp)) { return; } // (recorded,temperature,humidity) VALUES ('Sun Jan 17 21:15:58 2016', 2100.000000, 2600.000000) $t_time = date_parse_from_format("D M j G:i:s Y", $payload->time); if (!is_array($t_time)) { return; } $time = sprintf("%s-%s-%s %s:%s:%s", $t_time["year"], $t_time["month"], $t_time["day"], $t_time["hour"], $t_time["minute"], $t_time["second"]); $sql = sprintf("INSERT INTO environment (recorded,temperature,humidity) VALUES ('%s', %f, %f)", $db->escapeString($time), floatval($payload->temp / 100.0), floatval($payload->hum / 100.0)); $res = $db->exec($sql); if (!$res) { echo "DB error: " + $db->lastErrorMsg() + "\n"; return; } } else { echo "Msg Received: " . date("r") . "\nTopic:{$topic}\n{$msg}\n"; } }
function msgAccept($UserData, $EventDetails) { $months_titles_array = array(1 => 'января', 2 => 'февраля', 3 => 'марта', 4 => 'апреля', 5 => 'мая', 6 => 'июня', 7 => 'июля', 8 => 'августа', 9 => 'сентября', 10 => 'октября', 11 => 'ноября', 12 => 'декабря'); $clear_date_arr = date_parse_from_format('Y-n-j H:i:sP', $EventDetails['start'][0]); $month_name = $months_titles_array[$clear_date_arr['month']]; $client_training_datetime = $clear_date_arr['day'] . ' ' . $month_name . ' в ' . $clear_date_arr['hour'] . ':' . $clear_date_arr['minute']; $mail_html_prepare = '<html><body><link href="https://viruviking.club/resources/css/virvik_mail.css" rel="stylesheet"><p style="text-align:center;"><img src="https://viruviking.club/resources/img/logo/mail_logo_100.png" style="width:100px;"></p><p>Здравствуйте!</p><p>Координаторы сообщества одобрили Вашу заявку на участие в пробной тренировке по историческому фехтованию. Пожалуйста, крайне внимательно ознакомьтесь с текстом данного сообщения.</p> <strong>Тренировка состоится:</strong><div style="display:block;width:400px;border:solid 1px #00a106;background:#fff;padding:10px 20px;margin:10px 0"> <p><strong>Дата, время:</strong> ' . $client_training_datetime . ' <br/><strong>Место проведения:</strong> ' . $EventDetails['location'] . '</p> <p>Контактное лицо (координатор):'; $mail_html_prepare .= '<br/><strong>Виктор Литвинков</strong><br/><i>Орг. вопросы сообщества в Йыхви</i><br/>+372 55 59 3171<br/><a href="mailto:victor@viruviking.club">victor@viruviking.club</a></div><h2>Информация для новичков</h2><p>Методика обучения, используемая Викингами Вирумаа, достаточно эффективна, и многие замечают резкий прогресс уже через 1-3 недели. Однако хотелось бы придерживать прыть начинающих бойцов, пытающихся форсировать достижение высоких результатов, ибо:<br></p><ul><li>Только ровный и стабильный тренировочный процесс способен, без срывов и серьезных травм, привести к вершинам мастерства.</li><li>Мастерство поединщика способно формироваться лишь на фундаменте персонально отточенной базовой техники! 90% — шлифовка действий и 10% - спаррингов.</li><li>Преждевременное стремление слабо подготовленного спортсмена к настоящему жесткому спаррингу — прямая дорога к разочарованиям и травмам!</li></ul><p>Суть этого предостережения не в том, чтобы удерживать учеников от реальных поединков, но в том, чтобы плавно и последовательно вводить новичков в полновесный тренировочный цикл.</p>'; $mail_html_prepare .= '<h3>Готов ли я к тренировкам?</h3><p>Неплохой физической базой для исторического фехтования являются бокс, борьба, тяжелая атлетика и прочие виды спорта, предполагающие силовую нагрузку. Восточные же единоборства являются, скорее тормозящим фактором, чем фундаментом физической подготовки: приходится тратить массу времени и сил, чтобы вернуть «восточникам» естественность и целесообразность движений.</p><p>Хорошие задатки имеют люди, занимавшиеся альпинизмом, водным туризмом, атлетикой и пожарно-прикладным спортом. Неплохой физической подготовкой также является стандартный набор приседаний, прыжков, отжиманий и подтягиваний.</p><h3>Инвентарь и экипировка</h3><p>Для тренировок по историческому фехтованию в первую очередь Вам потребуется тренировочный (утяжеленный) одноручный меч. На втором этапе тренировочной программы начнутся занятия с «гуманизированным» оружием. Для получения тренировочных снарядов пожалуйста обратитесь к координаторам сообщества или тренеру.</p><p>На тренировку следует приходить в комфортной спортивной одежде, тело должно быть покрыто максимальным образом. Рекомендуемый набор: кофта с длинными рукавами и капюшоном, спортивные штаны. Подберите одежду, которую не жалко испачкать, порвать или потерять. Для защиты рук необходимо использовать перчатки. Рекомендуется одевать тактические перчатки с защитными пластинами или шерстяные перчатки с подкладкой внутри. </p>'; $mail_html_prepare .= '<p>Для занятий в зале необходима сменная обувь. Если есть желание, можно заниматься в носках или босиком. С собой возьмите бутылочку воды - скорее всего, в ходе интенсивной тренировки захочется пить.</p><h3>Что еще необходимо знать?</h3><p>Первый этап тренировочной программы - общефизическая подготовка. Несколько тренировок подряд Вы будете делать различные упражнения для развития ног, рук и корпуса. Для достижения наилучших результатов рекомендуем ежедневно (или разу в пару дней) самостоятельно повторять комплекс упражнений, предложенных в рамках тренировки. Занятия в спортзале («качалке») и периодическое посещение бассейна послужат отличным дополнением к тренировочному процессу в рамках предложенной программы.</p><p>Выполнение упражнений в рамках физподготовки, а также отработка ударов и приемов на «балде», осуществляется тренировочными (утяжеленными) снарядами (т.е. «на железе»). Контактные бои (спарринги) проводятся только на гуманизированном оружии. Нецелевое использование инвентаря - запрещено.</p><p>Тренировки проводятся на так называемых «тренировочных полигонах» - специально оборудованных площадках. Рекомендовано явиться на место проведения тренировки за 5 минут до начала занятия.</p><p>До встречи на тренировке!</p>'; $Mail = new PHPMailer(); $Mail->From = '*****@*****.**'; $Mail->FromName = 'Викинги Вирумаа'; $Mail->CharSet = 'utf-8'; $Mail->Subject = 'VV - Уведомление с сайта viruviking.club'; $Mail->isHTML(true); $Mail->Body = $mail_html_prepare; // $Mail->AltBody = $mail_txt_prepare; $Mail->AddAddress($UserData[2]['value']); if (!$Mail->Send()) { return FALSE; } else { return TRUE; } }
private static function timeToSeconds($time) { $parsed = date_parse_from_format('H:i', $time); $seconds = 0; $seconds += $parsed['hour'] * 60 * 60; $seconds += $parsed['minute'] * 60; return $seconds; }
/** * @param mixed $input * @return bool */ public function validate($input) { if (!is_string($input)) { return false; } $result = date_parse_from_format($this->format, $input); return !$result['error_count'] && !$result['warning_count']; }
private function jalaliStrtotime($strdate, $format) { if (!$this->validate($strdate, $format)) { throw new InvalidParamException("Given date string: {$strdate}, is not in form of given format: {$format}", 1); } $pd = date_parse_from_format($format, $strdate); return $this->mktime($pd['hour'], $pd['minute'], $pd['second'], $pd['month'], $pd['day'], $pd['year']); }
/** * @param $target * @return DateTime */ public static function convertIntoDate($target) { $CI =& get_instance(); $CI->load->library('session'); $components = date_parse_from_format($CI->session->site_date_parsing, $target); extract($components); return date_create("{$year}/{$month}/{$day}"); }
/** * Publish news * @param string $id NewsTeaserID * @param string $date Date */ public function publishNews($id, $date) { $parsed = date_parse_from_format("d.m.Y - H:i", $date); $phpdate = mktime($parsed['hour'], $parsed['minute'], $parsed['second'], $parsed['month'], $parsed['day'], $parsed['year']); $mysqldate = date('Y-m-d H:i:s', $phpdate); $sql = "UPDATE newsteaser\n SET published = :date\n WHERE newsteaserid = :id;"; $query = $this->db->prepare($sql); $query->execute(array(':id' => $id, ':date' => $mysqldate)); }
/** * Validate date format must in format YYYYMMDDHHmmss * * @param unknown $attribute * @param unknown $value * @param unknown $parameters * @return boolean */ public function validateValDateTime($attribute, $value, $parameters) { $result = date_parse_from_format("YnjHis", $value); // print_r($result); if ($result['error_count'] == 0) { return checkdate($result['month'], $result['day'], $result['year']) && $result['hour'] >= 0 && $result['hour'] <= 23 && $result['minute'] >= 0 && $result['minute'] <= 59 && $result['second'] >= 0 && $result['second'] <= 59; } return false; }
/** * 验证日期格式是否正确 * @param string $date * @param string $format * @return boolean */ function is_date($date, $format = 'Y-m-d') { $t = date_parse_from_format($format, $date); if (empty($t['errors'])) { return true; } else { return false; } }
/** * * @param blaze\lang\String|string $string * @return blaze\util\Date */ public function parseDate($string) { $info = date_parse_from_format($this->pattern, $string); if ($info['error_count'] !== 0) { throw new ParseException($info['errors'][0]); } $d = new \blaze\util\Date($info['year'], $info['month'], $info['day'], $info['hour'], $info['minute'], $info['second']); return $d; }
function convertFromDateToUnixTimestamp($date) { //global $months; $timestamp = time(); $array = date_parse_from_format('F j, Y', $date); if (is_array($array)) { $timestamp = mktime(0, 0, 0, $array['month'], $array['day'], $array['year']); } return $timestamp; }
/** * Validate * * @param string $data Date to validate * @return boolean Returns true if the data validates with the format and is before the given date, otherwise false * @access public */ public function validate($data) { $parsed_date = date_parse_from_format($this->format, $data); if ((int) $parsed_date['error_count'] + (int) $parsed_date['warning_count'] > 0) { return false; } $data_dt = \DateTime::createFromFormat($this->format, $data, $this->timezone); $date_after_dt = \DateTime::createFromFormat($this->format, $this->date, $this->timezone); return $data_dt < $date_after_dt; }
public static function dateInTimestamp($_data, $_formato) { $ret = -1; try { $tmpTime = date_parse_from_format($_data, $_formato); $ret = mktime(0, 0, 0, $tmpTime['month'], $tmpTime['day'], $tmpTime['year']); } catch (Exception $e) { throw $e; } return $ret; }
/** * Bootstrap any application services. * * @return void */ public function boot() { Validator::extend('future', function ($attribute, $value, $parameters) { return strtotime($value) < time(); }); Validator::extend('date_check', function ($attribute, $value, $parameters) { $dp = date_parse_from_format('Y-m-d', $value); //dateからパースする関数 おかしい書式にはwarningが返されるのでそれを利用 return $dp['warning_count'] == 0; }); }
protected function asDateTime($value) { foreach ($this->iso8601Dates as $format) { $parsed = date_parse_from_format($format, $value); if ($parsed['error_count'] === 0 && $parsed['warning_count'] === 0) { $value = Carbon::createFromFormat($format, $value); break; } } return parent::asDateTime($value); }
public function validateValue($value) { $check_date = null; if ($m = preg_match('/^\\d\\d\\d\\d-\\d\\d{0,1}-\\d\\d{0,1}( \\d\\d:\\d\\d:\\d\\d){0,1}$/', $value)) { $check_date = date_parse_from_format('Y-m-d', $value); } if (!$check_date || !checkdate($check_date['month'], $check_date['day'], $check_date['year'])) { return false; } return true; }
public function getAllYearOnMenu() { $menus = $this->getAllMenu(); $years = array(); foreach ($menus as $menu) { $date = date_parse_from_format("Y-m-d H:i:s", date('Y-M-d h:i:s', $menu["NgayLap"]->sec)); $year = $date["year"]; if (!array_key_exists($year, $years)) { $years[$year] = $year; } } return $years; }
/** * @param $format string date format * @param $dateString * @return int|null timestamp or null if can't parse */ public function parseToTimeStamp($format, $dateString) { if ($dateString === null) { return null; } // Requires PHP >= 5.3.0 $t = date_parse_from_format($format, $dateString); if (isset($t['hour']) && isset($t['minute']) && isset($t['second']) && isset($t['month']) && isset($t['day']) && isset($t['year'])) { return mktime($t['hour'], $t['minute'], $t['second'], $t['month'], $t['day'], $t['year']); } else { return null; } }
/** * @param mixed $value Value to be validated * @param null $field Unused by this rule * @param null $allFields * * @internal param null $allFields Unused by this rule * * @return bool * * @since 2.0 */ public function validate($value, $field = null, $allFields = null) { $parameters = $this->getParameter(); $format = $parameters['format']; if (is_object($value) and !method_exists($value, '__toString') or $this->getParameter() === null) { return false; } if (!$format) { return false; } $date = date_parse_from_format($format, (string) $value); return $date['error_count'] + $date['warning_count'] === 0; }
private function convertFormat($date) { $date_parsed = date_parse_from_format($this->format, $date); if ($date_parsed['error_count'] > 0) { return $date; } if ($date_parsed['day'] === FALSE) { $date_parsed['day'] = '01'; } if ($date_parsed['month'] === FALSE) { $date_parsed['month'] = '01'; } return date($this->convertToFormat, strtotime($date_parsed['day'] . '-' . $date_parsed['month'] . '-' . $date_parsed['year'])); }