Site

time

v4

A 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ês

També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:00

Comparaçã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ês

Exemplos

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() ou to_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();