/** * Register Twig tags * @return array */ public function registerMarkupTags() { return ['filters' => ['duration' => function ($datetime) { $interval = preg_split('/\\:|\\:0/', $datetime); $diff = new \DateInterval('PT' . $interval[0] . 'H' . $interval[1] . 'M'); \Carbon\CarbonInterval::setLocale('ru'); return \Carbon\CarbonInterval::instance($diff); }, 'dateLocale' => [$this, 'dateLocale']]]; }
/** * @expectedException InvalidArgumentException */ public function testInstanceWithDaysThrowsException() { $ci = CarbonInterval::instance(Carbon::now()->diff(Carbon::now()->addWeeks(3))); }
/** * Register Twig tags * @return array */ public function registerMarkupTags() { return ['filters' => ['duration' => function ($datetime) { $interval = preg_split('/\\:|\\:0/', $datetime); $diff = new \DateInterval('PT' . $interval[0] . 'H' . $interval[1] . 'M'); \Carbon\CarbonInterval::setLocale('ru'); return \Carbon\CarbonInterval::instance($diff); }, 'dateLocale' => [$this, 'dateLocale'], 'unique' => function ($array) { if (!$array) { return $array; } return $ret = array_unique($array, SORT_REGULAR); }, 'pluck' => function ($collection, ...$items) { if (!$collection) { return; } $ret = []; foreach ($collection as $key => $object) { $_ret = []; foreach ($items as $key) { if (array_key_exists($key, $object)) { $_ret[$key] = $object[$key]; } else { return; } } $ret[] = $_ret; } return $ret; }, 'emt' => function ($string) { return EMTypograph::fast_apply($string, ['Nobr.nowrap' => 'on', 'Nobr.hyphen_nowrap' => 'on', 'OptAlign.all' => 'off', 'Text.paragraphs' => 'off', 'Text.breakline' => 'off']); }, 'emts' => function ($string) { return EMTypograph::fast_apply($string, ['Nobr.nowrap' => 'on', 'Nobr.hyphen_nowrap' => 'on', 'OptAlign.all' => 'off', 'Text.paragraphs' => 'off', 'Text.breakline' => 'off']); }], 'functions' => ['dateLocaleIntervalOld' => function ($date_start, $date_end) { $s = \Carbon\Carbon::parse($date_start); $e = \Carbon\Carbon::parse($date_end); $c = $e->month > $s->month; // \Carbon\Carbon::setLocale('ru'); if ($c) { return sprintf("c %s %s по %s %s", $s->day, $this->dateLocale($s, "%h"), $e->day, $this->dateLocale($e, "%h")); } else { return sprintf("c %s по %s %s", $s->day, $e->day, $this->dateLocale($e, "%h")); } }, 'dateLocaleInterval' => function ($date_start, $date_end) { $s = \Carbon\Carbon::parse($date_start); $sm = \Carbon\Carbon::parse($date_start)->startOfMonth()->day; $e = \Carbon\Carbon::parse($date_end); $em = \Carbon\Carbon::parse($date_end)->endOfMonth()->day; $isDifferentMonth = $e->month > $s->month; $isDifferentYear = $e->year > $s->year; $isFullMonth = $s->month == $e->month && $s->day == $sm && $e->day == $em; // \Carbon\Carbon::setLocale('ru'); if ($isDifferentYear) { return sprintf("c %s %s %s по %s %s %s", $s->day, $this->dateLocale($s, "%h"), $s->year, $e->day, $this->dateLocale($e, "%h"), $s->year); } if ($isDifferentMonth) { return sprintf("c %s %s по %s %s", $s->day, $this->dateLocale($s, "%h"), $e->day, $this->dateLocale($e, "%h")); } if ($isFullMonth) { return sprintf("в %s %s", $this->dateLocale($s, "%X"), $s->year); } return sprintf("c %s по %s %s", $s->day, $e->day, $this->dateLocale($e, "%h")); }]]; }