Accès aux dates en PHP au-delà de 2038
Je suis de la compréhension que, en raison de la nature que PHP représente des dates à l'aide de millisecondes, vous ne pouvez pas représenter les dates passées 2038. J'ai un problème lorsque je veux calculer remonte très loin dans l'avenir. Des milliers d'années.
Évidemment je ne peux pas utiliser la fonction date de php pour représenter cette date en raison de la limite, toutefois, j'ai quelque chose de mon côté... Tout ce que je veux faire est de stocker de l'année, le mois et le jour. Je ne m'inquiète pas pour l'heure, les minutes, les secondes et les millisecondes.
Ai-je raison de penser que sans ces informations supplémentaires, je devrais être capable de calculer beaucoup plus loin dans l'avenir parce que je suis prêt à jeter beaucoup d'informations. Est-ce une bibliothèque qui ne le fait actuellement? Si pas n'importe quel des conseils sur la façon d'aborder ce problème?
source d'informationauteur Moz
Vous devez vous connecter pour publier un commentaire.
Vous pouvez également utiliser la
DateTime
classe, qui représente en interne les composants de manière indépendante. Il n'est donc pas sensible à la 2038 limitation (sauf si vous utilisez ::méthode gettimestamp).Vous pourrait utiliser une plate-forme 64 bits.
Source.
Trouver votre plate-forme est de 64 bits avec
var_dump(PHP_INT_SIZE === 8)
. SiTRUE
votre système est en 64 bits.PHP a introduit Datetime() classe dans la version 5.2 de résoudre ce problème. Mais vous devez toujours être dans les OS 64 bits.
Vous avez raison de PHP n'est pas de vous permettre de gérer les dates > 2038, en mode natif. Cependant, il existe des bibliothèques comme cette une que profiter du fait que floating points sont 64 bits, vous permettant ainsi de contourner ce problème en cas de besoin. (Le tout sous l'hypothèse que vous utilisez un système 32 bits... si vous êtes à l'aide de 64 bits, vous êtes très bien).
Oublier Windows! Même si vous utilisez Apache 64 Bits sur Windows 64 Bits!
Si vous avez besoin de calculer l'horodatage, l'utilisation d'un système 64 bits (pas de Windows):
Vous pouvez exécuter une LAMPE de Serveur à l'aide de VMWare sur votre Windows et il est probable que votre hôte définitif à utiliser par le serveur 64 Bits service.
En d'autres termes:
Eu ?
Remarque: time() et la méthode gettimestamp() à la fois fonctionner en environnement 64 bits (linux) après année 2038 ..