"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكنني التغلب على حد 2038 لتمثيل التاريخ في PHP؟

كيف يمكنني التغلب على حد 2038 لتمثيل التاريخ في PHP؟

تم النشر بتاريخ 2024-11-09
تصفح:334

How can I overcome the 2038 limit for date representation in PHP?

تمثيل التاريخ في PHP: التغلب على حدود 2038

في حين أن وظائف التاريخ الأصلية في PHP لها قطع في عام 2038، إلا أن هناك طرق بديلة للتعامل مع التواريخ خارج هذا القيد. أحد هذه الأساليب هو تخزين السنة والشهر واليوم فقط، بغض النظر عن مكونات الساعة والدقيقة والثانية والميلي ثانية.

من خلال تجاهل مكونات الوقت الإضافية هذه، يمكنك توسيع نطاق التواريخ القابلة للتمثيل بشكل ملحوظ. وذلك لأن كل مكون من هذه المكونات يشغل جزءًا من التمثيل المستند إلى المللي ثانية المستخدم داخليًا بواسطة PHP.

استخدام فئة DateTime

لهذا الغرض، يمكنك استخدم فئة DateTime. على عكس دالة التاريخ، يمثل DateTime مكونات الوقت بشكل مستقل. يستخدم مزيجًا من الطوابع الزمنية والمناطق الزمنية لنظام Unix لتخزين التاريخ وتتبعه.

$date = new DateTime();
$date->setDate(5000, 12, 31);
echo $date->format('Y-m-d'); // Outputs "5000-12-31"

حساب السنة والشهر واليوم

باستخدام فئة DateTime، يمكنك إجراء العمليات الحسابية على السنة، والشهر، ومكونات اليوم بشكل فردي. على سبيل المثال، لإضافة 100 عام إلى تاريخ:

$date->add(new DateInterval(['y' => 100]));
echo $date->format('Y-m-d'); // Outputs "5100-12-31"

باستخدام هذا الأسلوب، يمكنك توسيع حسابات التاريخ الخاصة بك إلى ما هو أبعد من الحدود التي يفرضها تمثيل التاريخ الافتراضي في PHP. ومع ذلك، من المهم ملاحظة أن فئة DateTime لا تزال تحتفظ بسياق المنطقة الزمنية، لذلك قد تظل العمليات التي تتضمن مناطق زمنية أو مقارنات زمنية خاضعة لقيود 2038.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3