كيفية التعامل مع الوقت في اختلاف الأزمنة في كل دولة ؟ {PHP}

الســلام عليكم ورحمة الله وبركاته ..

لقد بحثت كثيراً حول كيفية التعامل مع الوقت

وهي عن طريق تحديد الــ Time Zone للبلد والعثور علي الوقت

ولكن أحياناً Time Zone تكون غير صحيحة في الأجهزة .. فبحثت عن

طريقة لمعرفة الــ Time Zone عن طريق الأيبي عن طريق هذا الرابط :-

http://ip-api.com/php

وعندما حاولت إيجاد الوقت بهذا الكود :-

$timezone = 'Africa/Cairo'; //perl: $timeZoneName = "MY TIME ZONE HERE";

$date = new DateTime('now', new DateTimeZone($timezone));

$localtime = $date->format('h:i:s a');

echo "Local time is $localtime.";

لم يجد الوقت الصحيح وأتي بالتاريخ الخاص بــ الجهاز الخاص بي

وليس عن طريق الــ Time Zone

فإذا حد يعرف أفضل طريقة للتعامل مع الوقت في PHP

ياريت يفدناً .. وشكراً مقدماً

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

ahmedsaoud31 أضف ردا

الوقت الذي يتم التعامل معه هو وقت الخادم سواء على الإستضافة أو خادم شخصي ويعتمد هذا على البلد الموجود به الخادم، وإن كان الخادم هو جهازك سيكون توقيت الخادم هو توقيت جهازك لأنه هو الخادم في هذه الحالة.

فرق التوقيت Africa/Cairo مثلاً يزيد عن توقيت غرينتش بمقدار 2+ فإذا استخدمت Africa/Cairo وأنت في مصر لن يتغير شيئ، استخدام DateTimeZone سيقوم بتحول الوقت للجهة المُحددة بفارق توقيت غرينتش عن هذه المنطقة.

شكراً لردك وعلي الإفادة أخي ..

وهل يتم تغير وقت الخادم بتغير البلد ..

يعني يمكنني استخدام وقت واحد لكل الدول .. مثلاً MICROTIME ..!؟

ahmedsaoud31 أضف ردا

يُمكنك استخدام دالة date_default_timezone_set * لضبط القيمة الإفتراضية للبلد الذي تريده ليتم اعتماد التوقيت الجديد في جميع تعاملات الوقت في الملف المُعرفه الدالة أعلاه.

أُطر العمل توفر تعديل التوقيت على مستوى المشروع مرة واحدة في ملف الإعدادت الخاصة بالإطار

قمت باستخدام هذه الدالة .. date_default_timezone_set

ولكنها لم تعمل جيداً .. أريد أن اعرف ماهي الطريقة التي يستخدمها الفيسبوك

في عمل توقيت البوستات فمهما قمت بتغير الوقت عندي أو الــ Location أو TimeZone

يبقي التاريخ ثابت لا يتغير ..

لا دخل لتغيير إعدادت الوقت في جهازك بتوقيت الخادم إلا في حالة أنك تستخدم نفس الجهاز كخادم وزائر لنفس الموقع.

هل موقعك قمت برفعه على استضافة أم في بيئة التطوير على جهازك؟

تماماً أخي ..

قمت بتجربة علي استضافة ..

و الدالة date_default_timezone_set عملت علي الخادم المرفوع

وأتي بالــ Timezone الصحيح .. وإتي بالوقت صحيح ..

شكراً لهذه المعلومة الخاصة (باختلاف الوقت الخاص بالسيرفر) .. بالتوفيق أخي :)

دُمت بود، تمنياتي بالتوفيق :)

anas r. أضف ردا

لا أتخيل حلاً مثالياً لهذا الإشكال إلا عن طريق ضبط المنطقة الزمنية مسبقاً من طرف الزبون، تماماً كما يتم عادة ضبط لغة المتصفح lang، وعندئذ يمكن من خلال شيفرة برمجية معينة بلغة JavaScript إزاحة قيمة أي عنصر time ضمن شيفرة HTML باتجاه قيمة الزمن الصحيحة لدى الطرف الزبون.

أعتقد أن معايير W3C Geolocation API التي أصبحت متوفرة في الإصدارات الحديثة من المتصفحات تساعدك في حل هذه المشكلة، علماً بأني لست مطلعاً على تفاصيلها.

المشكلة التعامل مع قاعدة البيانات فمثلاً

إذا هناك إعداد علي هذا المستخدم متوفر أم لا

فهي تعتمد في أخر وقت قام بفتح الموقع .. ولكن للإسف فرق التوقيت للدولة

هيحدث مشاكل كثيرة ..

anas r. أضف ردا

لم أفهم تعليقك تماماً، لكن مما فهمت أستطيع القول أن التاريخ في قاعدة البيانات يجب أن يكون مدوناً بتوقيت عالمي، وهو ما كان يعرف بتوقيت جرينتش.

انظر:

ما اقصده هو أن التاريخ يخزن في قاعدة البيانات

وليست هذه المشكلة .. ولكن المشكلة عند استعراضه لن يكون صحيح بسبب الاختلاف ..

وممكن اشوف موضوع التوقيت العالمي .. شكراً لاهتمامك .. :)

شكرا شباب على الافاده

AhmedSalahAssar أضف ردا

تم حل المشكلة شكراً لكم ..