Como posso obter o último dia do mês em PHP?
Dado:
$a_date = "2009-11-23"
Eu quero 30-11-2009; e dado
$a_date = "2009-12-23"
Quero 31-12-2009.
t
retorna o número de dias no mês de uma determinada data (consulte os documentos paradate
):
$a_date = "2009-11-23";
echo date("Y-m-t", strtotime($a_date));
DateTime
você pode fazer algo parecido com isto: #(new DateTime('2009-11-23'))->modify('last day of')
O código que usa strtotime () falhará após o ano 2038. (conforme fornecido na primeira resposta neste segmento) Por exemplo, tente usar o seguinte:
Ele dará resposta como: 1970-01-31
Portanto, em vez de strtotime, a função DateTime deve ser usada. O código a seguir funcionará sem o problema do ano 2038:
fonte
strtotime
código me forneceráEu sei que isso é um pouco tarde, mas acho que há uma maneira mais elegante de fazer isso
PHP 5.3+
usando a classe DateTime :fonte
$date = new DateTime('last day of 2020-2');
$date = DateTime::createFromFormat('m/d/Y', '1/10/2014');
Existe também a função PHP embutida cal_days_in_month () ?
fonte
Isso deve funcionar:
fonte
O que está errado - O mais elegante para mim é usar
DateTime
Gostaria de saber que não vejo
DateTime::createFromFormat
, one-linerfonte
Você pode criar uma data para o primeiro mês que vem e depois usar
strtotime("-1 day", $firstOfNextMonth)
fonte
mktime(0, 0, 0, $month+1, 0, $year);
strtotime()
emktime()
é desencorajado porque. de bugs conhecidos, como a determinação da data nos limites dos meses e os cálculos dos anos bissextos. ComoDateTime
está disponível, você deve usar esta classe para evitar problemas no futuro. Como disse muitas vezes antes de mim, tanto estas funçõesstrtotime()
emktime()
irá falhar depois de 2038. É por isso que downvoted ...Tente isso, se você estiver usando o PHP 5.3 ou superior,
Para encontrar a data do próximo mês, modifique da seguinte maneira:
e assim por diante..
fonte
Sua solução está aqui ..
fonte
31
paraSeptember
que, como você sabe que não é correto.Você pode encontrar o último dia do mês de várias maneiras. Mas simplesmente você pode fazer isso usando a função strtotime () e date () do PHP .
Demonstração ao vivo
Mas se você estiver usando PHP> = 5.2, sugiro fortemente que você use o novo objeto DateTime. Por exemplo, como abaixo:
Demonstração ao vivo
Além disso, você pode resolver isso usando sua própria função, como abaixo:
fonte
Se você usar a extensão da API do Carbon para PHP DateTime, poderá obter o último dia do mês com:
fonte
$date->day = 0;
Você também pode usá-lo com data e hora
fonte
fonte
Usando o Zend_Date é bem fácil:
fonte
fonte
Aqui está uma função completa:
Isso produziria o seguinte:
Saída: 28
fonte
Existem maneiras de obter o último dia do mês.
fonte
Estou atrasado, mas há várias maneiras fáceis de fazer isso, conforme mencionado:
Usar o mktime () é o meu caminho para obter controle completo sobre todos os aspectos do tempo ... IE
Definir o dia como 0 e mover o mês para cima 1 fornece o último dia do mês anterior. 0 e números negativos têm o mesmo efeito nos diferentes argumentos. PHP: mktime - Manual
Como alguns já disseram, o horário do strtotime não é o caminho mais sólido a percorrer e pouco, se nada for tão versátil.
fonte
Estou usando strtotime com cal_days_in_month da seguinte maneira:
fonte
Eu o envolvi na minha aula auxiliar de data e hora aqui https://github.com/normandqq/Date-Time-Helper usando
$dateLastDay = Model_DTHpr::getLastDayOfTheMonth();
E está feito
fonte
Outra maneira de usar mktime e não date ('t'):
Dessa forma, calcula se é 31,30 ou 29
fonte
Extensão da API do Carbon para PHP DateTime
ou
retornará
fonte
http://zkinformer.com/?p=134
fonte
Essa é uma maneira muito mais elegante de chegar ao final do mês:
fonte
Você pode usar a função "
t
" na data para obter o número do dia em um determinado mês.O código será algo como isto:
O código é auto-explicado. Então espero que ajude.
fonte