cotonti.com : Подскажите про фильтры по датам https://www.cotonti.com Neueste Themenbeiträge Cotonti en Tue, 13 Jan 2026 16:42:08 -0000 Kopusha Вот тут какая загвоздка. Время у меня хранится в виде 1633471547
И тут или я не понял или меня Алексей не понял)

Мне нужно выводить статисту календарно. То есть у меня сейчас "За неделю" это за 7 дней (сегодня пятница, выводим с пятницы по пятницу).

		case 'week':
			$from = $sys['now'] - 604800;
			$to = $sys['now'];
			//порівнюємо з попереднім
			$from_prev = $sys['now'] - 1209600;
			$to_prev = $sys['now'] - 604800;
			break;

Но мне поставили задачу вывести "за текущую неделю" - то есть сегодня пятница - вывожу с понедельника по пятницу, с $ponedelnik до $sys['now']
Если сегодня утро понедельника 8 утра - то за время с 00.00 до 08.00 понедельника.

И точно так же За календарный месяц и Календарный год.
Заранее спасибо!

]]>
Di, 05 Okt 2021 22:11:37 -0000
Alex300 $date = (int)date('d'); $month = (int)date('m'); $year = (int)date('Y'); $todayFrom = mktime(0,0,0, $month, $date, $year); $todayTo = mktime(23,59,59, $month, $date, $year); // OR $todayTo = mktime(0,0,0, $month, $date + 1, $year);

В Cotonti есть аналогичные функции с префиксом cot_ - они учитывает временную зону сервера / пользователя.

]]>
Mi, 22 Sep 2021 10:14:07 -0000
Kopusha Привет, скорее не про кота а в общем, можем ткнете носом в какой мануал толковый.

Фильтрую запрос по дате, что то наподобии:

switch ($period) {
		case 'day':
			$from = $sys['now'] - 86400;
			$to = $sys['now'];
			break;
		case 'yesterday':
			$from = $sys['now'] - 86400;
			$to = $sys['now'] - 172800;
			break;
		case 'week':
			$from = $sys['now'] - 604800;
			$to = $sys['now'];
			break;
		case 'month':
			$from = $sys['now'] - 2592000;
			$to = $sys['now'];
			break;
		case 'year'://за текущий год
			$from = $sys['now'] - 31536000;
			$to = $sys['now'];
			break;
		case 'all'://за все время
			$from = 0;
			$to = $sys['now'];
			break;
		case 'custom'://выбор дат    
$setfrom = cot_import_date('cust_from', true, false, 'G');
			$setto = cot_import_date('cust_to', true, false, 'G');
	        if (!empty($setfrom) && !empty($setto))
	        {
				$from = $setfrom;
				$to = $setto;
	        }
	        else
	        {
	            cot_error(cot::$L['querydatewrong'].cot::$R['code_error_separator'], '');
				$from = 0;
				$to = $sys['now'];
	        }
	
	        if ($setfrom <= $setto)
	        {
	        }
	        else
	        {
	            cot_error(cot::$L['querydatewrong'].cot::$R['code_error_separator'], '');
				$from = 0;
				$to = $sys['now'];
	        }
	        break;
		default:
		//Весь час
			$from = 0;
			$to = $sys['now'];
			break;
	}
	if(!empty($period))
	{
		$where['period'] = "date BETWEEN {$from} AND {$to}";
	}	
	else
	{
		$where['period'] = "date BETWEEN {$from} AND {$to}";
	}

Оно естественно дает математический фильтр, для которого "год" это с 22 сент 2021 по 22 сент 2220.

case 'custom'://выбор дат   

дает +- выбрать нужный период.
Но надо сделать "за сегодня" = с 0 ночи реально сегодня (по времени системному сервера и настроек сайта - они совпадают) до 23.59 ночи этого дня

Или "за месяц" = с 1 сентября  до 22 сентября.
Может у кого то есть готовый код?
Заранее спасибо!

 

 

]]>
Mi, 22 Sep 2021 09:30:14 -0000