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!
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:
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
Sobre o Autor
0 Comentários