Pergunta

Acabei de descobrir, executando um script de calendário, que os carimbos de data / hora em PHP têm um limite de 2038. O que isso realmente significa?Por que é 2038 em vez de 2050 ou 2039?Por que um limite se os carimbos de data / hora contam apenas os segundos de uma determinada data (1970)?

Foi útil?

Solução

O limite é imposto pelos inteiros assinados de 4 bytes que a maioria das bibliotecas C usa para representar essa contagem.Matemática rápida (assume 365 dias, anos, não exatamente correto):

2147483648 seconds ~ 68.1 years

Isso também implica em um limite inferior de ~ 1900.Algumas bibliotecas começaram a introduzir contagens de época de 64 bits, mas são poucas no momento.

Outras dicas

O valor máximo de um número inteiro de 32 bits é 2.147.483.647.Se você adicionar +1 a isso, você obtém -2.147.483.647.2.147.483.647 segundos de 01-01-1970 00:00:00 é 19 de janeiro de 2038. Se você adicionar mais um segundo, obterá uma data em algum lugar em 1902.

Meu palpite é que ele é armazenado em um número fixo de bits, o que significa um limite de quão grande o carimbo de data / hora pode chegar.Poderíamos fazer algumas contas para descobrir exatamente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top