PHP — Strtotime não gerando datas futuras longas
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:
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:
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! 👋