PHP Echo Timezone بناءً على إزاحة GMT
سؤال
لديّ تطبيق يخزن بيانات وقت GMT في MySQL DB مثل هذا: 2009-12-16 15:27:47.
يتم تخزين إزاحة المنطقة الزمنية للمستخدم في عمود آخر مثل هذا: -6
المنطقة الزمنية أعلاه هي GMT-6 ، وهو CST. هل هناك أي طريقة يمكنني من خلالها صدى CST (أي التاريخ ('t ") من بيانات إزاحة GMT؟
ملاحظة: يجب أن أضيف أيضًا أن المنطقة الزمنية العالمية للتطبيق يتم تعيينها باستخدام: date_default_timezone_set ('gmt') ؛
المحلول
لسوء الحظ ، لا يوجد دائمًا منطقة زمنية واحدة لكل إزاحة GMT. العديد من التعويضات GMT لها مناطق زمنية متعددة. أيضا ، تتغير إزاحة GMT أثناء DST (عند الاقتضاء). على سبيل المثال ، خلال DST ، حصة الولايات المتحدة/أريزونا والولايات المتحدة/الجبلية نفس إزاحة GMT ؛ ومع ذلك ، خلال بقية العام ، US/Mountain
و US/Arizona
لا تشارك نفس إزاحة GMT. يمكنك استخدام إما DateTimeZone::listIdentifiers()
أو تحقق من الدليل للحصول على قائمة بالمناطق الزمنية المدعومة في PHP.
إذا كنت تبدأ تطبيقًا من نقطة الصفر ، أقترح تخزين معرف TimeZone بدلاً من إزاحة GMT ، لكنني أعتقد أن تطبيقك قيد الإنتاج بالفعل. في هذه الحالة ، لا توجد طريقة موثوقة لعرض المنطقة الزمنية دون تحسين بياناتك.
أود أن أقترح عليك إضافة ملف timezone
عمود إلى الجدول. يمكنك كتابة برنامج نصي لمرة واحدة من شأنه تعيين ملف timezone
إلى بعض قائمة الإعدادات الافتراضية المحددة مسبقًا على أساس إزاحة GMT. على سبيل المثال ، إذا كان إزاحة GMT هو 8 ، فقم بتعيين timezone
إلى America/Los_Angeles
. أخيرًا ، قم بتغيير التطبيق الخاص بك لعرض/حفظ معرفات المنطقة الزمنية بدلاً من إزاحة GMT. قد يتسبب هذا في مشاكل لمجموعة فرعية من المستخدمين ، ولكنه يسمح لهم بتغيير المنطقة الزمنية إذا كانوا بحاجة إلى ذلك.