PHP - تحويل تنسيق المنطقة الزمنية للسلسلة إلى عدد صحيح أوفست [مغلق]

StackOverflow https://stackoverflow.com//questions/25086456

سؤال

واضحة ومباشرة جدا:

تقوم PHP بإرجاع المناطق الزمنية بالتنسيق التالي:

"America/Los_Angeles"

أريد تحويله إلى:

-7

لقد وجدت العديد من الرموز لتحويله، وحساب الاختلافات باستخدام الوظائف المخصصة.ولكن كحد أدنى، لا أستطيع أن أصدق أنه لا توجد طريقة أبسط (ربما وظيفة التاريخ والوقت) للحصول على القيمة على الفور..أي شخص يعرف عن هذا؟

هل كانت مفيدة؟

المحلول

$dateTimeZone = new DateTimeZone("America/Los_Angeles");
$date = new DateTime(null, $dateTimeZone);
echo $dateTimeZone->getOffset($date)/60/60;

تجريبي

نصائح أخرى

يستخدم PHP المناطق الزمنية القياسية من قاعدة بيانات المنطقة الزمنية IANA.

"أمريكا/Los_Angeles" هي لا نفس -7.-7 هي "إزاحة المنطقة الزمنية"، وليست "منطقة زمنية".اقرأ "المنطقة الزمنية! = الإزاحة" في علامة المنطقة الزمنية ويكي.

اعتبر ذلك "America/Los_Angeles" يمثل توقيت المحيط الهادئ للولايات المتحدة، وهو فقط -7 خلال التوقيت الصيفي للمحيط الهادئ (PDT).وبقية العام، يكون التوقيت بتوقيت المحيط الهادئ (PST)، وهو -8.

سيمنحك الكود الموجود في إجابة جون بشكل صحيح الإزاحة التي تستخدمها المنطقة الزمنية لـ حاضِر التاريخ و الوقت.أدرك أن القيمة ستتغير اعتمادًا على وقت تشغيل التعليمات البرمجية.

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top