Como descobrir o dia da semana em PHP

Descobrir o dia da semana a partir de uma data é uma tarefa comum em várias aplicações PHP. Felizmente, o PHP oferece funções simples e eficientes para trabalhar com datas, como date() e strtotime(). Neste post, vamos mostrar como descobrir o dia da semana em PHP, incluindo como trabalhar com diferentes formatos de data e fusos horários.

Usando a função date()

A função date() é uma das mais simples e amplamente utilizadas para manipulação de datas em PHP. Para obter o dia da semana, basta usar o formato 'l' (para o nome completo do dia) ou 'D' (para a abreviação):

Exemplo 1: Obter o dia da semana atual:

<?php
echo date('l'); // Retorna o dia da semana completo, como 'Monday'
?>

Exemplo 2: Abreviação do dia da semana atual:

<?php
echo date('D'); // Retorna o dia da semana abreviado, como 'Mon'
?>

Nesse exemplo, date('l') retorna o nome completo do dia da semana, como “Monday”, enquanto date('D') retorna a forma abreviada, como “Mon”.

Descobrindo o dia da semana para uma data específica

Para obter o dia da semana de uma data específica, como um aniversário ou um evento, você pode usar a função strtotime() em conjunto com date().

Exemplo 3: Dia da semana de uma data específica:

<?php
$data = '2024-09-20'; // Exemplo de data no formato Y-m-d
echo date('l', strtotime($data)); // Retorna o dia da semana, ex: "Friday"
?>

Aqui, a função strtotime() converte a data string em um timestamp, que é então usado pela função date() para determinar o dia da semana. No exemplo acima, se a data for 20 de setembro de 2024, a saída será “Friday”.

Descobrindo o dia da semana em português

Por padrão, o PHP retorna os dias da semana em inglês. Para obter o dia da semana em português, podemos criar um mapeamento simples entre os dias em inglês e suas correspondentes traduções.

Exemplo 4: Traduzindo o dia da semana para português:

<?php
$daysOfWeek = [
    'Sunday' => 'Domingo',
    'Monday' => 'Segunda-feira',
    'Tuesday' => 'Terça-feira',
    'Wednesday' => 'Quarta-feira',
    'Thursday' => 'Quinta-feira',
    'Friday' => 'Sexta-feira',
    'Saturday' => 'Sábado'
];

$data = '2024-09-20';
$dayInEnglish = date('l', strtotime($data));

echo $daysOfWeek[$dayInEnglish]; // Retorna "Sexta-feira"
?>

Neste exemplo, criamos um array associativo $daysOfWeek que mapeia os dias em inglês para os dias da semana em português. Depois, utilizamos o dia retornado por date('l') para buscar a tradução no array e exibir em português.

Usando IntlDateFormatter para localização

Uma forma mais robusta de trabalhar com datas localizadas é utilizando a classe IntlDateFormatter do PHP, que faz parte da extensão intl e permite manipular datas de acordo com o idioma e região definidos.

Exemplo 5: Utilizando IntlDateFormatter para exibir o dia da semana em português:

<?php
$formatter = new IntlDateFormatter('pt_BR', IntlDateFormatter::FULL, IntlDateFormatter::NONE);
$formatter->setPattern('EEEE'); // 'EEEE' para o nome completo do dia da semana

$data = '2024-09-20';
$timestamp = strtotime($data);

echo $formatter->format($timestamp); // Retorna "sexta-feira"
?>

Aqui, IntlDateFormatter é configurado para a localidade pt_BR (Português do Brasil), e o padrão EEEE retorna o nome completo do dia da semana, como “sexta-feira”.

Calculando o próximo dia da semana

Você também pode querer calcular a data do próximo dia específico da semana. Por exemplo, se hoje é segunda-feira e você deseja descobrir a data da próxima sexta-feira.

Exemplo 6: Encontrando a próxima sexta-feira:

<?php
$hoje = date('Y-m-d');
$proximaSexta = date('Y-m-d', strtotime('next Friday', strtotime($hoje)));

echo $proximaSexta; // Retorna a data da próxima sexta-feira
?>

Aqui, strtotime('next Friday', strtotime($hoje)) calcula o timestamp da próxima sexta-feira a partir da data atual.

Trabalhando com fusos horários

Por padrão, o PHP utiliza o fuso horário definido no php.ini ou no código da aplicação. Para garantir que a data e o dia da semana estejam corretos, especialmente em aplicações que lidam com múltiplos fusos horários, defina explicitamente o fuso horário com a função date_default_timezone_set().

Exemplo 7: Definindo o fuso horário:

<?php
date_default_timezone_set('America/Sao_Paulo'); // Define o fuso horário para São Paulo
echo date('l'); // Exibe o dia da semana no fuso horário de São Paulo
?>

Isso garante que os cálculos de data e hora sejam consistentes, especialmente em servidores localizados em fusos horários diferentes.

Mais exemplos práticos

Como descobrir o dia da semana de uma determinada data:

<?php

// Array com os dias da semana
$diasemana = array('Domingo', 'Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', Sábado');

// Aqui usamos a data atual ou qualquer outra data no formato Y-M-D (2016-05-19)
$data = date('Y-m-d');

// Variável que recebe o dia da semana (0 = domingo, 1 = segunda, 2 = terca ...)
$diasemana_numero = date('w', strtotime($data));

// Mostra o dia da semana
echo $diasemana[$diasemana_numero];

?>

Outro exemplo…

<?php

$data = '2024-02-14'; // Sua data desejada

// Obtém o dia da semana
$dia_da_semana = date('l', strtotime($data));

echo "A data {$data} cai em uma {$dia_da_semana}.";

?>

date('l', strtotime($data)): Retorna o nome completo do dia da semana para a data fornecida.

echo "A data {$data} cai em uma {$dia_da_semana}.";: Exibe a mensagem contendo a data e o dia da semana correspondente.

Simples, não é? O PHP oferece uma variedade de formatações de data, permitindo personalização conforme suas necessidades.

Experimente e adapte conforme necessário para integrar essa funcionalidade em seus projetos PHP. Se tiver alguma dúvida ou precisar de mais informações, fique à vontade para perguntar!

QUER APRENDER PHP ORIENTADO A OBJETOS OU APERFEIÇOAR O QUE JÁ SABE?

Então conheça o curso online que já ajudou milhares de pessoas a aprender a programar e desenvolver seus próprios projetos do ZERO e usando orientação a objetos de uma forma fácil de entender.

CLIQUE NA IMAGEM ABAIXO E SAIBA MAIS:

CLIQUE AQUI E SAIBA MAIS

Dúvidas ou sugestões sobre como descobrir o dia da semana em PHP? Deixem nos comentários! Para mais dicas, acesse o nosso canal no YouTube:
https://youtube.com/criandobits

Tags:

Sobre o Autor

Benedito Silva Júnior
Benedito Silva Júnior

Bacharel em Sistemas de Informação pelo Instituto Paulista de Pesquisa e Ensino IPEP. Apaixonado por tecnologias e games do tempo da vovó!

0 Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *