Dev & EngARTIGO

Implementando horário de funcionamento em PHP

Neste artigo, o autor apresenta um passo a passo ensinando a usar uma biblioteca da Spatie para implementar um horário de funcionamento na linguagem PHP.

Fala, pessoal! Tudo bom?

Continuando a série de artigos sobre bibliotecas legais escritas em PHPPHP44 conteúdosPadronizando seu código com PHP CS FixerDev (Back & Front) · mai 2019Docker de imagem. Para rodar projetos PHP em menos de 30 segundosDev (Back & Front) · jan 2026PHP 7.3: conheça as novidades desta versãoDev (Back & Front) · abr 2019Ver tudo em Dev (Back & Front) , hoje eu irei trazer mais uma biblioteca da Spatie! Uma biblioteca muito interessante para implementar uma funcionalidade que certos negócios podem precisar em seus sistemas: o horário de funcionamento do negócio.

Suponha que você esteja fazendo um site institucional e queira avisar ao usuário se a empresa está aberta ou não naquele momento. Com a spatie/opening-hours, em poucas linhas de código você pode implementar essa funcionalidade.

Vamos ao código!

Crie uma pasta para este exemplo: opening e depois dê um composer require:

composer require spatie/opening-hours

Depois vamos criar um arquivo de exemplo opening.php com o código abaixo:

<?php

require_once 'vendor/autoload.php';

use Spatie\OpeningHours\OpeningHours; //carregando a classe OpeningHours
$openingHours = OpeningHours::create([ //criando uma instância de OpeningHours
    'monday' => ['08:00-12:00', '13:00-20:00'], //definindo o horário de funcionamento padrão na segunda
    'tuesday' => ['08:00-12:00', '13:00-20:00'], //definindo o horário de funcionamento padrão na terça
    'wednesday' => ['08:00-12:00', '13:00-20:00'], //definindo o horário de funcionamento padrão na quarta
    'thursday' => ['08:00-12:00', '13:00-20:00'], //definindo o horário de funcionamento padrão na quinta
    'friday' => ['08:00-12:00', '13:00-20:00'], //definindo o horário de funcionamento padrão na sexta
    'saturday' => [], //definindo o horário de funcionamento padrão no sábado
    'sunday' => [], //definindo o horário de funcionamento padrão no domingo
    'exceptions' => [
        '2018-06-22' => ['13:00-20:00'], //definindo uma excessão no dia do jogo do Brasil na copa
        '2018-09-15' => ['09:00-18:00'], //definindo uma excessão em dia de evento.
        '01-01' => [], //definindo uma excessão no feriado de ano novo
        '12-25' => [], //definindo uma excessão no feriado de natal
    ],
]);

//testando alguns horários

var_dump($openingHours->isOpenOn('monday')); // validando se funciona por padrão na segunda (true)
var_dump($openingHours->isOpenOn('sunday')); // validando se funciona por padrão no domingo (false)
var_dump($openingHours->isOpenAt(new DateTime('2018-09-15 20:01:00'))); // validando se está funcionando no dia 15 de setembro de 2018 às 20:01 (false)
var_dump($openingHours->isOpenAt(new DateTime('2019-01-01'))); //validando se está funcionando no dia 01 de janeiro  (false);
var_dump($openingHours->forDay('wednesday')); //verificando o horário de funcionamento padrão as quartas
var_dump($openingHours->nextOpen(new DateTime('2018-01-01 10:00:00'))); //verificando o próximo horário de abertura depois do dia primeiro de janeiro

Em seguida é só rodar:

php opening.php

Espero que a biblioteca facilite a criação de sites institucionais ou outros sistemas que precisem de implementação de horário de funcionamento.

Até a próxima, galera!

MBA em Engenharia de Softwares Orientado para Serviços pela Metrocamp, Campinas/SP. Bacharel em Matemática Aplicada e Computacional pela Universidade Federal Rural do Rio de Janeiro, Community Manager do iMasters. Programador PHP desde 2002. Evangelista PHPSP. Desenvolve sistemas desde batalhas Pokemon em mIRC, a robôs automatizadores de tarefas.

Ver perfil