Travailler avec des dates au-delà de 2038 en PHP
L'idée fausse courante selon laquelle les limitations de représentation de date de PHP s'étendent jusqu'en 2038 n'est pas entièrement exacte. Bien que PHP utilise effectivement les millisecondes pour la représentation des dates, il devient crucial de comprendre les implications lorsqu'il s'agit de dates bien au-delà de 2038.
Considérez la situation dans laquelle vous devez stocker et calculer des dates des milliers d'années dans le futur tout en ignorant les données spécifiques. composants temporels tels que les heures, les minutes, les secondes et les millisecondes. En supprimant ces informations, vous pouvez étendre votre capacité de représentation de date.
Au lieu de vous fier à la fonction de date php, vous pouvez exploiter la classe DateTime en PHP. Cette classe gère en interne les composants temporels de manière indépendante, contournant efficacement la limitation de 2038 (sauf si vous utilisez explicitement la méthode ::getTimestamp).
En utilisant la classe DateTime, vous pouvez stocker l'année, le mois et le jour, ce qui vous permet pour calculer des dates lointaines. Actuellement, aucune bibliothèque spécifique n'offre un support dédié pour cette représentation de date étendue. Cependant, vous pouvez implémenter des solutions personnalisées pour obtenir la fonctionnalité souhaitée.
Pour créer un objet DateTime, vous pouvez utiliser la syntaxe suivante :
$date = new DateTime('2038-12-31 23:59:59');
Pour incrémenter la date d'un nombre spécifique d'années, vous pouvez ajuster le composant de l'année directement :
$date->add(new DateInterval('P1000Y'));
Cela incrémenterait la date de 1000 ans, préservant la date d'origine sans perdre aucune information en raison du 2038 limitation.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3