public function buildForm(FormBuilderInterface $builder, array $options) { // Create the sample date and time data to be displayed // in the select form fields $now = new \DateTime(); // Set user's timezone //$now->setTimezone(new \DateTimeZone($options['data']->getTimezone())); // Format output according to user's locale $localeFormat = new \IntlDateFormatter($options['data']->getLocale(), \IntlDateFormatter::FULL, \IntlDateFormatter::FULL, (new \DateTimeZone($options['data']->getTimezone()))->getName()); if (is_array($this->formats['date']) && count($this->formats['date']) && is_array($this->formats['time']) && count($this->formats['time'])) { foreach ($this->formats['date'] as $dateFormat) { // Display format with current date to user $localeFormat->setPattern($dateFormat); $dateFormats[$dateFormat] = $localeFormat->format($now); } foreach ($this->formats['time'] as $timeFormat) { // Display format with current date to user $localeFormat->setPattern($timeFormat); $timeFormats[$timeFormat] = $localeFormat->format($now); } } $builder->add('username', 'text', array('constraints' => array(new Assert\NotBlank())))->add('email', 'email', array('constraints' => array(new Assert\NotBlank(), new Assert\Email())))->add('firstName', 'text', array('constraints' => array(new Assert\NotBlank())))->add('lastName', 'text', array('constraints' => array(new Assert\NotBlank())))->add('timezone', 'timezone')->add('avatarImage', new AvatarUploadType(), array('label' => 'Profile image')); if ($options['new']) { $builder->add('password', 'repeated', array('required' => true, 'type' => 'password', 'first_name' => 'password', 'second_name' => 'password_again', 'invalid_message' => 'The password fields must match.')); } // $builder // ->add('language', 'language', array( // 'data' => 'en_US', // 'disabled' => true // )) // ->add('locale', 'locale', array( // 'data' => 'en_US', // 'disabled' => true, // )) // ->add('currency', 'currency', array( // 'data' => 'USD', // 'disabled' => true // )) // ->add('dateFormat', 'choice', array( // 'data' => 'yyyy-MM-dd', // 'disabled' => true, // 'label' => 'Date Format', // 'choices' => $dateFormats, // 'multiple' => false, // )) // ->add('timeFormat', 'choice', array( // 'data' => 'HH:mm:ss', // 'disabled' => true, // 'label' => 'Time Format', // 'choices' => $timeFormats, // 'multiple' => false, // )); }
/** * @return array */ protected function getMonthNames() { $formatter = new \IntlDateFormatter(Yii::$app->language, \IntlDateFormatter::FULL, \IntlDateFormatter::FULL); $formatter->setPattern('MMMM'); $list = []; for ($i = 0; $i < 12; $i++) { $list[] = $formatter->format(mktime(0, 0, 0, $i, 1, 1970)); } $list[] = array_shift($list); return $list; }
public function ruDateFormat($dateRaw) { if ($dateRaw instanceof \DateTime) { $dateTime = $dateRaw; } else { $dateTime = new \DateTime($dateRaw); } $formatter = new \IntlDateFormatter('ru_RU', \IntlDateFormatter::NONE, \IntlDateFormatter::NONE); $formatter->setPattern('d MMMM YYYY'); return $formatter->format($dateTime); }
/** * Generates an array of localized month choices * * @param array $months The month numbers to generate * @return array The localized months respecting the configured * locale and date format */ protected function generateMonthChoices(array $months) { $pattern = $this->formatter->getPattern(); if (preg_match('/M+/', $pattern, $matches)) { $this->formatter->setPattern($matches[0]); $choices = array(); foreach ($months as $month) { $choices[$month] = $this->formatter->format(gmmktime(0, 0, 0, $month)); } $this->formatter->setPattern($pattern); } else { $choices = $this->generatePaddedChoices($months, 2); } return $choices; }
/** * * @param string $time * @param string $formatDate * @param string $formatTime * @param string $seperator * @return string */ public function __invoke($time = null, $formatDate = null, $formatTime = null, $pattern = null) { if (null === $time) { $datetime = new \DateTime(); } else { $datetime = new \DateTime($time); } if (null === $formatDate) { $formatDate = \IntlDateFormatter::LONG; } if ('LONG' === $formatDate) { $formatDate = \IntlDateFormatter::LONG; } if ('FULL' === $formatDate) { $formatDate = \IntlDateFormatter::FULL; } if ('MEDIUM' === $formatDate) { $formatDate = \IntlDateFormatter::MEDIUM; } if ('SHORT' === $formatDate) { $formatDate = \IntlDateFormatter::SHORT; } if (false === $formatDate) { $formatDate = \IntlDateFormatter::NONE; } if ('LONG' === $formatTime) { $formatTime = \IntlDateFormatter::LONG; } if ('SHORT' === $formatTime) { $formatTime = \IntlDateFormatter::SHORT; } if (null === $formatTime) { $formatTime = \IntlDateFormatter::NONE; } $fmt = new \IntlDateFormatter("de-DE", $formatDate, $formatTime); // , "Europe/Berlin", \IntlDateFormatter::GREGORIAN ); if (null !== $pattern) { $fmt->setPattern($pattern); } return $fmt->format($datetime); }
/** * format ela date dd/MM/yyyy * @param \IntlDateFormatter $formatter * @param \Datetime $date * @return string */ protected function processDate(\IntlDateFormatter $formatter, \Datetime $date) { $formatter->setPattern('dd/MM/yyyy'); return $formatter->format((int) $date->format('U')); }
<?php $formatter = new \IntlDateFormatter('ru_RU', \IntlDateFormatter::FULL, \IntlDateFormatter::FULL); $formatter->setPattern("d MMMM YYYY 'в' H:mm"); ?> <h3 class="text-center">Отчёт по расселению участников</h3> <p>Список мест проживания участников <?php echo $this->pixie->config->get('party.event.title'); ?> из других городов. Сформирован <?php echo $formatter->format(new \DateTime('now')); ?> . Готов на <?php echo $page['ready'][0]; ?> %. Расселены <?php echo $page['ready'][1] . ' ' . $this->pixie->party->declension($page['ready'][1], array('участник', 'участника', 'участников')); ?> из <?php echo $page['ready'][2] . ' ' . $this->pixie->party->declension($page['ready'][2], array('нуждающегося', 'нуждающихся', 'нуждающихся')); ?> в жилье, использованы <?php echo $page['ready'][3] . ' ' . $this->pixie->party->declension($page['ready'][3], array('дом', 'дома', 'домов')); ?> .</p> <table class="table table-bordered1 table-condensed"> <thead> <tr class="text-info"> <th><i class="fa fa-home"></i> Хозяева</th> <th colspan="6"><i class="fa fa-child"></i> Гости</th>
static function time($token, $options = array(), $attr) { $options['relative'] = $options['relative'] === 'true' || $options['relative'] == '1'; $has_class = $options['class'] !== 'false'; $options['rss'] = $options['rss'] !== 'false'; if (!$token) { $token = array('timestamp' => time(), 'utc' => true); } else { if (!isset($token['timestamp'])) { if (isset($token['album'])) { $token = $token['album']['date']; } else { if (isset($token['date']) && isset($token['date']['timestamp'])) { $token = $token['date']; } else { if (isset($token['event']) || isset($token['__koken__']) && $token['__koken__'] === 'event' || isset($token['year'])) { $obj = isset($token['event']) ? $token['event'] : $token; $str = $obj['year'] . '-'; $format = 'Y'; if (isset($obj['month'])) { $str .= $obj['month'] . '-'; $format = 'F ' . $format; if (isset($obj['day'])) { $str .= $obj['day']; $format = 'date'; } else { $str .= '01'; } } else { $str .= '01-01'; } $token = array('timestamp' => strtotime($str), 'utc' => true); $options['show'] = $format; } else { if (isset($token['year'])) { $m = isset($token['month']) ? $token['month'] : 1; $d = isset($token['day']) ? $token['day'] : 1; $token = array('timestamp' => strtotime($token['year'] . '-' . $m . '-' . $d), 'utc' => true); $options['show'] = 'F Y'; } } } } } } $timestamp = $token['timestamp']; // Don't timeshift dates where UTC param is false // Assume these dates are hardwired, like captured_on if (isset($token['utc']) && !$token['utc']) { date_default_timezone_set('UTC'); } if ($options['rss']) { echo date('D, d M Y H:i:s O', $timestamp); } else { if ($has_class) { $klass = $options['class']; } else { $klass = ''; } if ($options['relative']) { $klass .= ' k-relative-time'; } if (!empty($klass)) { $klass = ' class="' . $klass . '"'; } switch ($options['show']) { case 'both': $f = self::$site['date_format'] . ' ' . self::$site['time_format']; break; case 'date': $f = self::$site['date_format']; break; case 'time': $f = self::$site['time_format']; break; default: $f = $options['show']; break; } $dt = date('c', $timestamp); if (class_exists('IntlDateFormatter') && isset(self::$settings['language'])) { $df = new IntlDateFormatter(self::$settings['language'], IntlDateFormatter::NONE, IntlDateFormatter::NONE); $df->setPattern(self::to_date_field_symbol($f)); $text = $df->format(new DateTime($dt)); } else { $text = date($f, $timestamp); } $attr_clean = array(); foreach ($attr as $key => $val) { $attr_clean[] = "{$key}=\"{$val}\""; } $attr = join(' ', $attr_clean); echo <<<OUT <time{$klass} datetime="{$dt}" {$attr}> \t{$text} </time> OUT; } date_default_timezone_set(Koken::$site['timezone']); }
/** * @runInSeparateProcess */ public function testFormatWithDefaultTimezoneIntlShouldUseDefaultDateTimeZoneVariable() { if (!$this->isGreaterOrEqualThanPhpVersion('5.5.0-dev')) { $this->markTestSkipped('Only in PHP 5.5 IntlDateFormatter depends on default timezone (`date_default_timezone_get()`).'); } $this->skipIfIntlExtensionIsNotLoaded(); $this->skipIfICUVersionIsTooOld(); $tz = date_default_timezone_get(); date_default_timezone_set('Europe/Paris'); $formatter = new \IntlDateFormatter('en', StubIntlDateFormatter::MEDIUM, StubIntlDateFormatter::SHORT); $formatter->setPattern('yyyy-MM-dd HH:mm:ss'); $this->assertEquals('Europe/Paris', date_default_timezone_get()); $this->assertEquals($this->createDateTime(0, 'Europe/Paris')->format('Y-m-d H:i:s'), $formatter->format(0)); // Restores TZ. date_default_timezone_set($tz); }
public function getLocalizedTime(\DateTime $object, $timezone = null) { if (!$timezone) { $timezone = $this->container->get('session')->get('campaignchain.timezone'); } // Apply timezone and locale to DateTime object $localeFormat = new \IntlDateFormatter($this->container->get('session')->get('campaignchain.locale'), \IntlDateFormatter::FULL, \IntlDateFormatter::FULL, $timezone); $localeFormat->setPattern($this->container->get('session')->get('campaignchain.timeFormat')); return $localeFormat->format($object); }
public function action_message() { if ($this->request->post('action') == 'read') { if ($this->request->post('type') == 'user') { if (is_numeric($this->request->post('id'))) { $msg = $this->pixie->orm->get('usermsg', $this->request->post('id')); if ($msg->loaded()) { $formatter = new \IntlDateFormatter('ru_RU', \IntlDateFormatter::FULL, \IntlDateFormatter::FULL); $formatter->setPattern("d MMMM',' h:mm"); die(json_encode(array("status" => "success", "result" => $msg->content, "title" => "Сообщение от {$msg->sender->name} за " . $formatter->format(new \DateTime($msg->date))))); } } } } else { if ($this->request->post('action') == 'send') { if ($this->request->post('type') == 'user' && is_numeric($this->request->post('id')) && is_numeric($this->request->post('template'))) { $formatter = new \IntlDateFormatter('ru_RU', \IntlDateFormatter::FULL, \IntlDateFormatter::FULL); $formatter->setPattern('d MMMM'); $htmlText = ""; $user = $this->pixie->orm->get('user', $this->request->post('id')); if ($user->loaded()) { // Шаблон "Напомнить об активации" if ($this->request->post('template') == 1) { $htmlText .= "Мир вам, {$user->name}!\n\nВы указали этот email ({$user->email}) " . $formatter->format(new \DateTime($user->codesent)) . " при регистрации на конференцию Я МОЛОДОЙ! 2014.\n\nМы заметили, что на сегодняшний день вы по каким-то причинам не прошли регистрацию до конца. Напоминаем, что регистрация считается завершённой после добавления анкеты участника и внесения предоплаты. Можем ли у вас узнать, что вам помешало? Может быть, возникли какие-нибудь трудности с самой регистрацией, и вам нужна помощь?\n\nПожалуйста, смело обращайтесь: мы готовы ответить на ваши вопросы и постараемся помочь!\n"; if (strtotime($user->codesent) < strtotime('2014-07-01')) { $htmlText .= "\nВы приступали к регистрации заблаговременно, и мы ценим вашу пунктуальность! К сожалению, на тот момент у нас действовала старая форма регистрации на сайте imolod.ru, которую мы заменили 1 июля на новый сайт со всеми действующими условиями. Просим у вас прощения за то, что вначале мы не предусмотрели предоплату 500 руб., а потом её пришлось ввести! И поэтому индивидуально для вас мы отменяем повышение общего регистрационного взноса после 5 августа до 2000 рублей: для вас он в любое время останется равным 1500 руб.\n"; } if ($user->pass && $user->active) { $htmlText .= "\nДля продолжения регистрации вам нужно войти на сайт с помощью формы для входа:\nhttp://2014.imolod.ru/register#start\n"; } else { if ($user->code) { $htmlText .= "\nДля продолжения регистрации вам нужно перейти по этой ссылке и придумать для себя пароль:\nhttp://2014.imolod.ru/register/confirm?email={$user->email}&code={$user->code}\n"; } } $htmlText .= "\nЗатем вы откроете свой профиль для добавления анкет участников. Проверьте, пожалуйста, что все сведения в анкете указаны верно. Дальнейшие инструкции по оплате вы увидите, нажав кнопку оплаты.\n\nЕсли у вас есть замечания или предложения по методу регистрации, сообщите их нам, пожалуйста!\n\n\nПрограмма конференции:\nhttps://vk.com/page-71444548_48399312\n\nПодробные условия регистрации:\nhttps://2014.imolod.ru/register\n\nИнструкция по регистрации с картинками:\nhttps://vk.com/page-71444548_48108588\n\nВопросы и ответы в группе ВКонтакте:\nhttps://vk.com/board71444548\n\nБлагословений! Ждём вас!\n\n--\nОрганизаторы конференции Я МОЛОДОЙ! 2014 в Волгограде\ninfo@imolod.ru\nhttp://2014.imolod.ru\nhttps://vk.com/imolod14\n"; // echo $htmlText; } else { if ($this->request->post('template') == 2) { $htmlText .= "Мир вам, {$user->name}!\n\nМы, организаторы \"Я молодой\", очень рады, что вы собираетесь на эту конференцию и " . $formatter->format(new \DateTime($user->codesent)) . " решили зарегистрироваться на нашем сайте! Сейчас мы вовсю готовимся, ведь до начала осталось всего " . $this->pixie->party->daysLeft() . ".\n\nВаша регистрация очень важна для нас, чтобы спланировать все расходы и расселение. Ещё мы просим всех участников пожертвовать на нужды конференции по " . $this->pixie->config->get('party.periods.1.prices.full') . " рублей, из которых " . $this->pixie->config->get('party.periods.1.prices.prepay') . " нужно отправить заранее (можно и позже, но тогда вся сумма выйдет больше). Наше общее желание - чтобы во время всей конференции молодёжь могла вместе поклоняться Богу спокойно от бытовых проблем и суеты!\n\n"; $partsCount = $user->participants->where('cancelled', 0)->count_all(); if ($partsCount > 1) { $partsUnpayed = $user->participants->where('cancelled', 0)->where('money', '<', $this->pixie->config->get('party.periods.1.prices.prepay'))->find_all()->as_array(); $names = array(); foreach ($partsUnpayed as $part) { $names[] = $part->firstname . ' ' . $part->lastname; } $htmlText .= "Вы уже добавили анкеты {$partsCount} " . $this->pixie->party->declension($partsCount, array('участника', 'участников', 'участников')) . ", и для успешного завершения регистрации осталось внести предоплату за следующих из них: " . implode(", ", $names) . "."; } else { if ($partsCount) { $htmlText .= "Вы уже добавили свою анкету участника, и для успешного завершения регистрации осталось только внести предоплату."; } else { $htmlText .= "Для успешного завершения регистрации вам нужно заполнить свою анкету участника и внести предоплату."; } } $htmlText .= "\n\nА сделать нам денежный перевод совсем не сложно, так как доступны разные способы оплаты, и многие участники уже с этим справились. По этой ссылке вы перейдёте к подробным условиям и ко входу в свой профиль на сайте:\nhttp://2014.imolod.ru/register\n\nНаша группа Вконтакте, в которой есть программа конференции и ответы на вопросы:\nhttp://vk.com/imolod14\n\n"; if (!$user->grace) { if (strtotime('today') == strtotime($this->pixie->config->get('party.periods.1.lastday'))) { $htmlText .= "Сегодня, " . $formatter->format(new \DateTime('today')) . ", последний день для внесения предоплаты, чтобы для вас общий размер взноса за одного участника сохранился равным " . $this->pixie->config->get('party.periods.1.prices.full') . " руб. "; } else { if (strtotime('tomorrow') == strtotime($this->pixie->config->get('party.periods.1.lastday'))) { $htmlText .= "Завтра, " . $formatter->format(new \DateTime('tomorrow')) . ", последний день для внесения предоплаты, чтобы для вас общий размер взноса за одного участника сохранился равным " . $this->pixie->config->get('party.periods.1.prices.full') . " руб. "; } } } $htmlText .= "Пожалуйста, смело обращайтесь к нам за помощью или с вопросами - мы готовы ответить и пойти вам на встречу!\n\n--\nКоманда организаторов конференции \"Я МОЛОДОЙ\" в Волгограде\ninfo@imolod.ru\nhttp://2014.imolod.ru\nhttp://vk.com/imolod14\n"; } else { if ($this->request->post('template') == 3) { $htmlText .= "Мир вам, {$user->name}!\n\nСистема регистрации нам показывает, что вы заполнили анкету участника и пробовали отправить регистрационный взнос, но отправка не получилась. Вы можете проверить нынешнее состояние оплаты в своём профиле, в таблице с участниками:\nhttp://" . $this->pixie->config->get('party.event.domain') . "/register/profile\n\nЕсли вы совершали оплату через банковский перевод или Сбербанк Онлайн, то нормальный срок обработки составляет 2 рабочих дня. Остальные виды платежей исполняются всего за несколько минут. Если все сроки вышли, а в профиле сумма оплаты не появилась, значит платёж неудачный.\n\nМожем ли мы вам помочь? Пожалуйста, обращайтесь к нам со всеми вопросами и замечаниями! Осталось всего " . $this->pixie->party->daysLeft() . " до конференции, но ещё можно успеть. Мы учитываем, что вы пытались всё сделать ещё до конца льготного периода регистрации, поэтому, если вы сообщите нам свою проблему, размер взноса для вас не увеличится.\n\n--\nКоманда организаторов конференции \"Я МОЛОДОЙ\" в Волгограде\ninfo@imolod.ru\nhttp://2014.imolod.ru\nhttp://vk.com/imolod14\n"; // die($htmlText); } } } // template 3 // Осталось отправить, если есть что: if ($htmlText) { $result = $this->pixie->email->send(array($user->email => "=?utf-8?B?" . base64_encode($user->name) . "?="), array($this->pixie->config->get('party.contacts.info') => "=?utf-8?B?" . base64_encode('Организаторы ' . $this->pixie->config->get('party.event.short_title')) . "?="), "Ваша регистрация на " . $this->pixie->config->get('party.event.short_title'), $htmlText, false); if ($result) { $newMsg = $this->pixie->orm->get('usermsg'); $newMsg->content = $htmlText; $newMsg->type = 'email'; $newMsg->date = date('Y-m-d H:i:s', time()); $newMsg->save(); $newMsg->add('sender', $this->pixie->auth->user()); $newMsg->add('recipient', $user); $newMsg->save(); die(json_encode(array("status" => "success"))); } } // Отправка } } } } }
private function formatMonths(\IntlDateFormatter $formatter, array $months) { $pattern = $formatter->getPattern(); $timezone = $formatter->getTimezoneId(); $formatter->setTimezoneId(\DateTimeZone::UTC); if (preg_match('/M+/', $pattern, $matches)) { $formatter->setPattern($matches[0]); foreach ($months as $key => $value) { $months[$key] = $formatter->format(gmmktime(0, 0, 0, $key, 15)); } // I'd like to clone the formatter above, but then we get a // segmentation fault, so let's restore the old state instead $formatter->setPattern($pattern); } $formatter->setTimezoneId($timezone); return $months; }
public function generateSprintsForTask($project) { $sprints_numbers = array(); $sprints_dates = array(); $sprints_dates_text = array(); $interval = date_diff(new \DateTime(), $project->getCreatedAt())->days; $current_sprint = (int) ceil($interval / $project->getSprintLength()); $formatter = new \IntlDateFormatter(\Locale::getDefault(), \IntlDateFormatter::NONE, \IntlDateFormatter::NONE); $formatter->setPattern('d MMMM Y'); for ($i = 0; $i < 6; $i++) { $sprints_numbers[$i] = $current_sprint + $i; $start_date = clone $project->getCreatedAt(); $start_date->add(date_interval_create_from_date_string($project->getSprintLength() * ($current_sprint + $i - 1) . ' days')); $end_date = clone $start_date; $end_date->add(date_interval_create_from_date_string($project->getSprintLength() - 1 . 'days')); $sprints_dates[$i] = ['start_date' => $start_date, 'end_date' => $end_date]; $sprints_dates_text[$i] = $formatter->format($start_date) . ' — ' . $formatter->format($end_date); } return array($sprints_numbers, $sprints_dates, $sprints_dates_text, $current_sprint); }
<?php $formatter = new \IntlDateFormatter('ru_RU', \IntlDateFormatter::FULL, \IntlDateFormatter::FULL); $formatter->setPattern('d MMMM'); ?> <div class="table-responsive"> <table class="table table-condensed table-hover dataTables users"> <thead> <tr> <th data-sort="ascending">id</th> <th>имя</th> <th>email</th> <th>дата</th> <th>участники</th> <th>незарег</th> <th>платежи</th> <th>льгота</th> <th>активен</th> <th>роль</th> <th data-orderable="0"> </th> </tr> </thead> <tbody> <?php foreach ($page['users'] as $user) { ?> <tr<?php if (!$user->active) { echo " class=\"text-muted\""; } ?>
public function action_birthdays() { $formatterShort = new \IntlDateFormatter('ru_RU', \IntlDateFormatter::FULL, \IntlDateFormatter::FULL); $formatterShort->setPattern("d MMMM"); $birthdays = $this->pixie->party->getBirthdays(); $this->page['title'] = 'Именинники'; $this->page['content'] = ""; foreach ($birthdays as $birthday) { $this->page['content'] .= $formatterShort->format(new \DateTime($birthday['date'])) . " — {$birthday['name']} {$birthday['age']} " . $this->pixie->party->declension($birthday['age'], array('год', 'года', 'лет')) . "<br/>\n"; } }
} ?> </div> <div>Общая сумма полученных взносов: <strong><?php echo $page['totalMoney']; ?> </strong> рублей.</div> <!-- /. ROW --> <hr/> <?php $formatter = new \IntlDateFormatter('ru_RU', \IntlDateFormatter::FULL, \IntlDateFormatter::FULL); $formatter->setPattern('d/M'); ?> <div class="panel panel-default"> <div class="panel-heading">Комментарии участников</div> <table class="table table-condensed dataTables comments"> <thead class="hidden"> <tr> <th>Комментарий</th> </tr> </thead> <tbody> <?php foreach ($page['comments'] as $part) { ?> <tr> <td>
public function __toString() { $formatter = new \IntlDateFormatter(\Locale::getDefault(), \IntlDateFormatter::NONE, \IntlDateFormatter::NONE); $formatter->setPattern('d MMMM Y'); return $formatter->format($this->getDateStart()) . ' — ' . $formatter->format($this->getDateEnd()); }
/** * Function for returning date in french format like Lundi 12 Mai 1999 23:12 * @param \Datetime $datetime date to convert * @param type $lang Conversion language default french * @param type $pattern default pattern, french as default value * @return string */ public static function getFrenchDate(\Datetime $datetime, $lang = 'fr_FR', $pattern = 'E dd MMM yyyy HH:mm ') { $formatter = new \IntlDateFormatter($lang, \IntlDateFormatter::LONG, \IntlDateFormatter::LONG); $formatter->setPattern($pattern); return $formatter->format($datetime); }
private function formatTimestamps(\IntlDateFormatter $formatter, $regex, array $timestamps) { $pattern = $formatter->getPattern(); $timezone = $formatter->getTimezoneId(); if (version_compare(\PHP_VERSION, '5.5.0-dev', '>=')) { $formatter->setTimeZone(\DateTimeZone::UTC); } else { $formatter->setTimeZoneId(\DateTimeZone::UTC); } if (preg_match($regex, $pattern, $matches)) { $formatter->setPattern($matches[0]); foreach ($timestamps as $key => $timestamp) { $timestamps[$key] = $formatter->format($timestamp); } // I'd like to clone the formatter above, but then we get a // segmentation fault, so let's restore the old state instead $formatter->setPattern($pattern); } if (version_compare(\PHP_VERSION, '5.5.0-dev', '>=')) { $formatter->setTimeZone($timezone); } else { $formatter->setTimeZoneId($timezone); } return $timestamps; }
public function getResult() { $dateFormatter = new \IntlDateFormatter($this->locale, \IntlDateFormatter::FULL, \IntlDateFormatter::FULL); $dateFormatter->setPattern($this->format); return $dateFormatter->format($this->timestamp); }
/** * @Then /^In DatePicker I select the day around "([^"]*)" "([^"]*)" today$/ */ public function inDatepickerISelectTheDayAroundToday($beforeAfter, $period) { $el = $this->getSession()->getPage()->findAll('css', '.ui-datepicker-calendar'); if (null == $el) { throw new Exception("No date picker displayed"); } else { $now = new \DateTime(); if ("before" == $beforeAfter) { $now->sub(new \DateInterval($period)); } elseif ("after" == $beforeAfter) { $now->add(new \DateInterval($period)); } $formatter = new \IntlDateFormatter('fr_FR', \IntlDateFormatter::FULL, \IntlDateFormatter::FULL); $formatter->setPattern('MMMM'); $monthSearched = ucfirst($formatter->format($now)); foreach ($el as $index => $month) { $parent = $el[$index]->getParent(); $isMonthSearched = $parent->find("xpath", "//span[text()='" . $monthSearched . "']"); if ($isMonthSearched) { $isLink = $el[$index]->find("xpath", "//a[text()='" . $now->format("j") . "']"); if ($isLink) { $isLink->mouseOver(); $isLink->click(); } else { throw new Exception("No link found"); } } } } }
private function formatTimestamps(\IntlDateFormatter $formatter, $regex, array $timestamps) { $pattern = $formatter->getPattern(); $timezone = $formatter->getTimezoneId(); $formattedTimestamps = array(); $formatter->setTimeZone('UTC'); if (preg_match($regex, $pattern, $matches)) { $formatter->setPattern($matches[0]); foreach ($timestamps as $timestamp => $choice) { $formattedTimestamps[$formatter->format($timestamp)] = $choice; } // I'd like to clone the formatter above, but then we get a // segmentation fault, so let's restore the old state instead $formatter->setPattern($pattern); } $formatter->setTimeZone($timezone); return $formattedTimestamps; }
<?php $formatter = new \IntlDateFormatter('ru_RU', \IntlDateFormatter::FULL, \IntlDateFormatter::FULL); $formatter->setPattern("d MMMM YYYY 'в' H:mm"); $formatterShort = new \IntlDateFormatter('ru_RU', \IntlDateFormatter::FULL, \IntlDateFormatter::FULL); $formatterShort->setPattern('d MMMM YYYY'); $formatterShort2 = new \IntlDateFormatter('ru_RU', \IntlDateFormatter::FULL, \IntlDateFormatter::FULL); $formatterShort2->setPattern('d MMMM H:mm'); $panel = array('userIcon' => "<span class=\"pull-right label label-" . ($page['user']->active ? "success" : "danger") . "\">№ {$page['user']->id}</span>", 'identity' => array("<i class=\"fa fa-user fa-fw\"></i> {$page['user']->name}", "<i class=\"fa fa-envelope fa-fw\"></i> {$page['user']->email}", $page['user']->active ? "<i class=\"fa fa-check-circle fa-fw text-success\"></i> " . $formatterShort->format(new \DateTime($page['user']->codesent)) . " активирован" : "<i class=\"fa fa-times-circle fa-fw text-danger\"></i> " . $formatter->format(new \DateTime($page['user']->codesent)) . " <span class=\"text-muted\">отправлен код</span>", "<i class=\"fa fa-gift fa-fw\"></i> Льготный период <button data-userid=\"{$page['user']->id}\" class=\"pull-right btn btn-default btn-xs grace-user" . ($page['user']->grace ? " active" : "") . "\"><i class=\"fa fa-gift" . ($page['user']->grace ? " text-success" : "") . "\"></i> Льгота</button>"), 'participantsIcon' => '', 'participants' => array(), 'ordersIcon' => '', 'orders' => array(), 'inbox' => array(), 'outbox' => array()); if ($page['user']->role == 'admin') { $panel['identity'][] = "<span class=\"text-primary\"><i class=\"fa fa-certificate fa-fw\"></i> <strong>Администратор</strong></span>"; } else { if ($page['user']->role == 'operator') { $panel['identity'][] = "<span class=\"text-primary\"><i class=\"fa fa-certificate fa-fw\"></i> <strong>Оператор</strong></span>"; } else { $panel['identity'][] = "<span class=\"text-muted\"><i class=\"fa fa-certificate fa-fw\"></i> Пользователь</span>"; } } if ($page['user']->money) { $panel['identity'][] = "<i class=\"fa fa-money fa-fw text-danger\"></i> {$page['user']->money} <i class=\"fa fa-rouble\"></i> свободны"; } if ($page['user']->participants->count_all()) { $team = $page['user']->participants->order_by('gender', 'asc')->find_all()->as_array(); $teamCount = $page['user']->participants->where('cancelled', 0)->count_all(); $panel['participantsIcon'] = " <span class=\"pull-right label label-default\"><i class=\"fa fa-users fa-lg fa-fw\"></i> {$teamCount}</span>"; foreach ($team as $item) { $panel['participants'][] = ($item->cancelled ? "<s>" : "") . "<i class=\"fa fa-fw " . ($item->gender == 2 ? 'fa-female text-danger' : 'fa-male text-primary') . "\"></i> <a href=\"/admin/participants/{$item->id}\">{$item->firstname} {$item->lastname}</a>" . ($item->cancelled ? "</s>" : "") . ($item->money ? "<sup>{$item->money}</sup>" : ""); } } if ($page['user']->orders->count_all()) { $panel['orders'] = $page['user']->orders->find_all()->as_array();
public function getLibelle() { $formatter = new \IntlDateFormatter("fr_FR", \IntlDateFormatter::LONG, \IntlDateFormatter::LONG); if ($this->getMode() == self::MODE_DAY) { $formatter->setPattern("EEEE d MMMM Y"); return ucfirst($formatter->format($this->getDate())); } if ($this->getMode() == self::MODE_MONTH) { $formatter->setPattern("MMMM Y"); return ucfirst($formatter->format($this->getDateDebutMois())); } $formatter->setPattern("MMM"); $firstMonth = $formatter->format($this->getDateDebutSemaine()); $lastMonth = $formatter->format($this->getDateFinSemaine()); if ($firstMonth == $lastMonth) { $firstMonth = ""; } else { $firstMonth = " " . $firstMonth; } return sprintf("%s%s au %s %s %s", $this->getDateDebutSemaine()->format('j'), $firstMonth, $this->getDateFinSemaine()->format("j"), $lastMonth, $this->getDateFinSemaine()->format("Y")); }
} else { $user_id = ""; } $enda = $page['part']->gender == 2 ? "а" : ""; $findabout = unserialize($page['part']->findabout); foreach ($findabout as $key => $value) { $findabout[$key] = $this->pixie->config->get('party.userfields.findabout.options.' . $value); } $formatter = new \IntlDateFormatter('ru_RU', \IntlDateFormatter::FULL, \IntlDateFormatter::FULL); $formatter->setPattern('d MMMM YYYY'); $formatterShort = new \IntlDateFormatter('ru_RU', \IntlDateFormatter::FULL, \IntlDateFormatter::FULL); $formatterShort->setPattern('d MMMM'); $formatterShort2 = new \IntlDateFormatter('ru_RU', \IntlDateFormatter::FULL, \IntlDateFormatter::FULL); $formatterShort2->setPattern('d MMMM H:mm'); $formatterShort3 = new \IntlDateFormatter('ru_RU', \IntlDateFormatter::FULL, \IntlDateFormatter::FULL); $formatterShort3->setPattern("d.MM"); $age = date_diff(date_create($page['part']->birthday), date_create('now'))->y; $daysTotal = $this->pixie->config->get('party.userfields.days.options'); $daysTotal = max(array_keys($daysTotal)); $subject_types = array(array('Республика', 'респ.', 'республики', 0), array('Край', 'кр.', 'края', 1), array('Область', 'обл.', 'области', 1), array('Автономная область', 'АО', 'автономной области', 1), array('Автономный округ', 'АО', 'автономного округа', 1), array('Город', 'г.', 'города', 0)); $panel = array('userIcon' => '', 'payIcon' => '', 'ordersIcon' => '', 'unknown' => array(), 'identity' => array(), 'conditions' => array(), 'geo' => array(), 'payment' => array(), 'orders' => array(), 'accomodation' => array()); // Панель недостающих данных if (!$this->pixie->party->makeWebsiteLink($page['part']->website)) { $panel['unknown'][] = "Сайт неизвестен"; } if ($age < 1 || $age >= 200) { $panel['unknown'][] = "Возраст неизвестен"; } if (trim($page['part']->phone) == '') { $panel['unknown'][] = "Телефон неизвестен"; }
<?php $formatter = new \IntlDateFormatter('ru_RU', \IntlDateFormatter::FULL, \IntlDateFormatter::FULL); $formatter->setPattern('d MMMM, H:mm'); ?> <div class="table-responsive"> <table class="table table-condensed table-hover dataTables paylist"> <thead> <tr> <th>№</th> <th><span class="hidden-xs">статус</span></th> <th>сумма</th> <th data-sort="descending">дата заявки</th> <th>дата завершения</th> <th>назначение</th> <th>отправитель</th> </tr> </thead> <tbody> <?php foreach ($page['orders'] as $order) { ?> <tr<?php if (!$order->payed) { echo " class=\"text-muted\""; } ?> > <td class="text-muted"><small><?php echo $order->id; ?>
/** * It seems IntlDateFormatter caches the timezone id when not explicitly set via constructor or by the * setTimeZoneId() method. Since testFormatWithDefaultTimezoneIntl() runs using the default environment * time zone, this test would use it too if not running in a separated process. * * @runInSeparateProcess */ public function testFormatWithDefaultTimezoneIntlShouldUseTheTzEnvironmentVariableWhenAvailable() { $this->skipIfIntlExtensionIsNotLoaded(); $this->skipIfICUVersionIsTooOld(); $tz = getenv('TZ'); putenv('TZ=Europe/Paris'); $formatter = new \IntlDateFormatter('en', StubIntlDateFormatter::MEDIUM, StubIntlDateFormatter::SHORT); $formatter->setPattern('yyyy-MM-dd HH:mm:ss'); $this->assertEquals('Europe/Paris', getenv('TZ')); $this->assertEquals($this->createDateTime(0)->format('Y-m-d H:i:s'), $formatter->format(0)); // Restores TZ. putenv('TZ=' . $tz); }
public function testFormatWithDefaultTimezoneIntl() { $this->skipIfIntlExtensionIsNotLoaded(); $this->skipIfICUVersionIsTooOld(); $formatter = new \IntlDateFormatter('en', StubIntlDateFormatter::MEDIUM, StubIntlDateFormatter::SHORT); $formatter->setPattern('yyyy-MM-dd HH:mm:ss'); $this->assertEquals($this->createDateTime(0)->format('Y-m-d H:i:s'), $formatter->format(0)); }
protected function getIntlDateFormatter() : \IntlDateFormatter { $intlDateFormatter = new \IntlDateFormatter(\Locale::getDefault(), $this->dateFormat, $this->timeFormat, $this->outputTimezone, $this->calendar, $this->pattern); $intlDateFormatter->setLenient(false); // Ensure the year is always four digits when no pattern is set if ('' === $this->pattern) { $intlDateFormatter->setPattern(str_replace(['yy', 'yyyyyyyy'], 'yyyy', $intlDateFormatter->getPattern())); } return $intlDateFormatter; }