Estou confuso ao usar php para lidar com data / hora.
O que estou tentando fazer é o seguinte: quando um usuário visita minha página, estou perguntando seu fuso horário e exibindo o 'dia da semana' em seu fuso horário.
Não quero usar o dia do navegador. Eu quero fazer esse cálculo em php.
É assim que estou tentando alcançá-lo:
- O fuso horário inserido pelo usuário
- Carimbo de data / hora Unix calculado pela função php time ().
Mas não sei como proceder ... Como colocaria o 'dia da semana' neste fuso horário.
date("N", $timestamp)
para obter1..7
valores a partir de segunda-feira. Nas versões anteriores, você pode usar o truque(date("w", $timestamp) + 6) % 7
para obter0..6
valores a partir de segunda-feira.Minha solução é esta:
O resultado é:
Tuesday
O resultado é:
Tue
fonte
Acho que essa é a resposta correta, basta alterar
Europe/Stockholm
para o fuso horário dos usuários.http://php.net/manual/en/function.date.php
Para obter uma lista de fusos horários suportados, consulte http://php.net/manual/en/timezones.php
fonte
Muito obrigado pessoal por seus comentários rápidos.
Isso é o que vou usar agora. Postando a função aqui para que alguém possa usá-la.
Informe se você encontrar alguma correção.
fonte
Outra maneira rápida:
fonte
Se você puder obter a diferença de fuso horário, basta adicioná-la ao carimbo de data / hora atual e usar a função gmdate para obter a hora local.
fonte
Isso deve funcionar (não testei, então YMMV). Funciona armazenando o fuso horário atual do script, alterando-o para aquele especificado pelo usuário, obtendo o dia da semana da
date()
função no carimbo de data / hora especificado e, em seguida, configurando o fuso horário do script de volta ao que era para começar.Você pode ter algumas aventuras com identificadores de fuso horário, no entanto.
fonte
"Dia da semana" é na verdade algo que você pode obter diretamente da função php date () com o formato "l" ou "N" respectivamente. Dê uma olhada no manual
editar: Desculpe não ter lido os posts do Kalium direito, ele já explicou isso. Foi mal.
fonte
Verifique a data é segunda ou domingo antes de obter a última segunda ou último domingo
fonte
Com base em uma das outras soluções com um sinalizador para alternar entre semanas começando no domingo ou segunda-feira
fonte
As representações de partes de datas baseadas em letras padrão são excelentes, exceto pelo fato de não serem tão intuitivas. A maneira muito mais conveniente é identificar abstrações básicas e uma série de implementações específicas. Além disso, com essa abordagem, você pode se beneficiar do preenchimento automático.
Já que estamos falando de datetimes aqui, parece plausível que a abstração básica seja
ISO8601DateTime
. Uma das implementações específicas é a data e hora atual, aquela de que você precisa quando um faz uma solicitação ao seu back-end, portanto,Now()
classe. O segundo, que é de alguma utilidade para você, é uma data e hora ajustada para algum fuso horário. Não surpreendentemente, é chamadoAdjustedAccordingToTimeZone
. E, finalmente, você precisa de um dia da semana em um fuso horário de uma data e hora passada: há umaLocalDayOfWeek
aula para isso. Portanto, o código se parece com o seguinte:Para saber mais sobre essa abordagem, dê uma olhada aqui .
fonte
fonte