time
v4A classe MUCRM\engine\date_time\time é o sistema de datas e horários do framework. Classe e métodos em snake_case: time::now(), add_days(), to_sql().
Importação
use MUCRM\engine\date_time\time;Instanciação
now()
Retorna a data e hora atual.
$now = time::now();parse()
Converte string ou DateTime em instância de time.
$date = time::parse('2026-04-28 11:40:00');
// Também funciona com valores do banco:
$date = time::parse($customer->created_at);Manipulação fluida
Todos os métodos retornam a própria instância — encadeamento permitido.
Somar tempo
$expiration = time::now()->add_days(30);
$expire = time::now()
->add_years(1)
->add_months(2);Subtrair tempo
$ago = time::now()->sub_minutes(15);
$expiration = time::now()
->add_days(30)
->sub_hours(1);Métodos disponíveis
add_years(x) sub_years(x)
add_months(x) sub_months(x)
add_days(x) sub_days(x)
add_hours(x) sub_hours(x)
add_minutes(x) sub_minutes(x)Períodos
Útil para filtros SQL, relatórios e rankings.
$today = time::now()->start_of_day(); // 00:00:00
$end_today = time::now()->end_of_day(); // 23:59:59
$weekly = time::now()->start_of_week(); // segunda-feira
$monthly = time::now()->start_of_month(); // primeiro dia do mêsTambém disponíveis: end_of_week(), end_of_month().
Formatação
echo $date->to_sql(); // 2026-04-28T11:40:00
echo $date->to_br(); // 28/04/2026 11:40:00
echo $date->to_date_br(); // 28/04/2026
echo $date->to_time(); // 11:40:00Comparação
if ($expiration->is_past()) {
echo 'A assinatura já expirou!';
}
if ($expiration->is_future()) {
echo 'Ainda possui tempo ativo.';
}
if ($expiration->is_today()) {
echo 'Expira hoje!';
}
if ($expiration->is_between('2026-01-01', '2026-12-31')) {
echo 'Pertence ao ano de 2026.';
}diff_for_humans()
Texto amigável relativo à data atual.
echo time::now()->sub_days(1)->diff_for_humans(); // ontem
echo time::now()->add_days(1)->diff_for_humans(); // amanhã
echo time::now()->sub_hours(2)->diff_for_humans(); // há 2 horas
echo time::now()->add_months(1)->diff_for_humans(); // em 1 mêsExemplos
Expiração de assinatura
$expires_at = time::now()->add_days(30);
subscription::update([
'expires_at' => $expires_at->to_sql()
]);Relatório semanal
$start = time::now()->start_of_week()->to_sql();
$customers = customer::where('created_at', '>=', $start)
->order_by('name', 'ASC')
->get();Último login
echo time::parse($customer->last_login_at)
->diff_for_humans();Boas práticas
- Salve no banco com
to_sql() - Exiba ao usuário com
to_br()outo_date_br() - Use
diff_for_humans()em listagens e logs - Use
start_of_week()para filtros de período - Use
is_past()para verificar expiração
Resumo
time::now();
time::parse('2026-04-28 11:40:00');
->add_days(30);
->sub_hours(2);
->start_of_day();
->end_of_day();
->start_of_week();
->start_of_month();
->to_sql();
->to_br();
->to_date_br();
->to_time();
->is_past();
->is_future();
->is_today();
->is_between('2026-01-01', '2026-12-31');
->diff_for_humans();