سؤال

لقد طُلب مني عرض الوقت "الصحيح" على موقعنا على الويب والذي أشعر بصراحة لا معنى له لأن "الصحيح" يمكن تفسيره في مجموعة متنوعة من الطرق.

تؤدي طريقتنا الحالية بالتأكيد إلى وقت غير دقيق لأنه يستخدم عنصر تحكم في الخادم الذي يقدم JavaScript الذي يعمل على التشغيل باستخدام DateTime من الخادم كمعلمة لإنشاء كائن ساعة في JavaScript يصنع أخيرًا الصفحة ثم يبدأ في زيادة الساعة. بين معالجة الخادم ، ومواصفة الشبكة والأداء من جانب العميل (هناك الكثير من الأشياء الأخرى التي تعمل على تشغيلها) تنتهي الساعة بعيدًا عن وقت الخادم الفعلي ومن يعرف مقارنةً بالكمبيوتر العميل.

حتى أتمكن من الحصول على الوقت "الصحيح" الذي أظهر ؛

  • استخدم وقت الكمبيوتر المحلي وتمرير تاريخ جديد () إلى كائن ساعة JavaScript. الايجابيات: يجب أن تكون أقرب إلى ساعة الكمبيوتر قدر الإمكان. سلبيات: لست متأكدًا من دقة ساعة الكمبيوتر المسموح بها في أي منطقة تايمز.
  • استخدم خدمة الويب لطلب TCP إلى NTP Server لتحديث الساعة على صفحة الويب. PROS: إذا كان الكمبيوتر المحلي أيضًا مزامنة مع NTP سيكون دقيقًا وأفضل تطابق ممكن. السلبيات: سيتعين على جميع تعديلات المنطقة الزمنية بالنسبة لخوادمنا. إذا كانت ساعة الكمبيوتر قد خرجت من عدم التوافق.

هل أقوم بتنفيذ خدمة الويب الخاصة بي أو استخدام شيء مثل ؛ أدوات الأرض أو خدمة ويب في الوقت المناسب (تعديل: تمت إزالة الرابط - الآن 404)

إليك منشور مدونة من جون جالواي على خدمة الويب الذرية وهو قديم جدًا ، ومع ذلك يحتل المرتبة العالية عندما أكون جوجل ولا ينتهي.

Hoply يمكنني الفوز بالوسيطة مع الإدارة لماذا لا يكون المزامنة على ساعة الخادم الخاصة بنا (GMT) منطقيًا إذا لم تكن في هذه المنطقة الزمنية ولماذا نحتاج حتى إلى مطابقة جهاز كمبيوتر محلي.

أي زوايا على هذا أنا في عداد المفقودين؟

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

المحلول

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

بعد ذلك ، أنت على مقربة من الوقت الدقيق. طالما تم كتابة رمز مؤقت JavaScript الخاص بك بشكل صحيح ، فلن تنفجر بعيدًا عن المزامنة قبل تحميل الصفحة التالية. لكنني رأيت الكثير من رمز ساعة JS السيئ. (تلميح: التاريخ () جيد ، setTimeout () سيء.)

إذا كان لديك تطبيق يجلس المستخدمون لفترة طويلة ، فما عليك سوى تحديث وقتك إما عن طريق إعادة تحميل الصفحة أو AJAX.

لن تقلق بشأن المناطق الزمنية ، فقط استخدم وقت UTC ، لذلك لا يوجد أي ارتباك حول الوقت الذي ستحدث فيه الأشياء.

نصائح أخرى

أولاً ، تأكد من أن عميلك يدرك أن Windows و Linux و OSX جميعهم لديهم ساعات مدمجة دائمًا ما تكون مرئية للمستخدمين (أو أصبحت مرئية بسهولة بالغة). أيضًا ، تأكد من أن عميلك يدرك الساعات المادية التي تقع غالبًا بالقرب من أي أكشاك قد يتم إعدادها لإخفاء الساعة المدمجة من نظام التشغيل.

إذا كنت تعرف ذلك ، وما زال عميلك يريد ساعة على موقع الويب الخاص بك ، فاطلب من زبونك تحديد الوقت "الصحي تعريفات).

يمكنك استخدام استهداف الجغرافية لمعرفة الموقع الفعلي لزائر موقع الويب وفي قاعدة البيانات الخاصة بك ، تم تخزين (GMT - XX: XX) للمنطقة ثم احسب الوقت بناءً على موقع الطلب. هذا سيوفر الرحلة الطويلة إلى أي خدمة ويب طرف ثالث.

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

إنه بعيد عن الكمال ، خاصة مع مستخدمي الشركات الذين قد يبدو أنهم يتصلون من مكان ما لا يتوافقون معه الولايات المتحدة)

Handle time in UTC.

  • Have users tell you what zone they want to use.
  • If your users have persistent profiles, persist the choice.
  • Always display UTC and Local Time side by side and clearly labelled.

You can also display an arbitrary number of user specified zone clocks. Vista does this and I remain surprised at how handy it is.

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