PHP — Strtotime não gerando datas futuras longas
Entenda os limites da função strtotime em PHP e como ultrapassá-los usando a classe DateTime
![PHP — Strtotime não gerando datas futuras longas](/content/images/size/w2000/2024/02/calendar-1990453_1920-1.jpg)
Olá Gente
Hoje me deparei com um problema curioso, ao aplicar o script abaixo me retornou 1969–12–31!
Mas porque?
Checando a documentação da função strtotime vemos a causa entre as primeiras notas:
![](https://www.palomamacetko.com.br/content/images/2024/02/1-cvbcu_pibc1hmxg_p7txiw.png)
Ou seja, o ano máxima suportada é 2038 para versões 32 bits do PHP.
Mas ainda fica a dúvida, porque isto?
Bom, o problema é que o strtotime funciona calculando as datas em “Unix timestamp”, onde a data é convertida em um número inteiro positvo começando de 1/1/1970.
Então, o script acima, acaba gerando o “timestamp” de “2258023377” e este número inteiro positivo é maior que o limite de calculo de sistemas de 32 bits:
![](https://upload.wikimedia.org/wikipedia/commons/thumb/d/d7/Leonhard_Euler.jpg/1200px-Leonhard_Euler.jpg)
Como resolver?
Opção #1
Mude sua versão do PHP para a versão 64 bits, nesta versão, o limite de números inteiros positivos é de 9,223,372,036,854,775,807 (Bem Grandeeeeeeee)
Opção #2
Ou utilizamos a class DateTime, que existe para tratar datas nativamente.
Exemplo:
Por hoje é só, pessoal! 🛑
Até mais! 👋