كيفية اكتشاف المنطقة الزمنية للمستخدم في أشكال التسجيل؟

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

  •  12-09-2019
  •  | 
  •  

سؤال

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

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

المحلول

جافا سكريبت:

var today = new Date();

alert( today.getTimezoneOffset() );

هذا سيعطي الإزاحة (GMT-X)، ولكن ليس اسم TimeZone الفعلي. ضع في اعتبارك أن نفس القطار بتوقيت جرينتش يمكن أن تتوافق مع عدة مرات من عدة مرات وما يجب أن تأخذ في الاعتبار وفورات ضوء النهار. ومع ذلك، ربما يكون هذا هو المكان الأسهل للبدء، وإلى شن إعطاء المستخدمين الذين يختارون timezone من القائمة المنسدلة.

نصائح أخرى

يمكنك محاولة الكشف عن بلد مستخدمين عن طريق مطابقة عنوان IP الخاص به إلى سلسلة من القوائم. هناك طرق مختلفة لتحقيق ذلك ولكن الأفضل هو باستخدام هذا API..

مثال على الاستخدام سيكون: http://nl.ae/iptocapi.php؟ type=1&ip=00.00.00.. وبعد هذا سيعيد رمز البلد عنوان IP هذا. ثم من السهل جدا مطابقة رمز البلد مع timezone.

بمجرد العثور على timezone بهذه الطريقة، يمكنك استخدامها كقيمة افتراضية في مربع منسدلة.

لقد وجدت حلا أفضل وقوي هنا: http://www.onlineaspect.com/2007/06/08/AUTO-DETECT-A-Time-zone-with-javascript/.

كما يفسر صاحب البلاغ، Date.getTimezoneOffset() غير متناسق.

يمكنك استخدام جافا سكريبت لمزيد من الأهمية أو أقل موثوقية إزاحة TIMEZONE. HTTP، إلى حد علمي، لا يوفر أي وسيلة لتحديد TimeZone العميل على الخادم.

استخدام جافا سكريبت:

<input type="hidden" id="visitorTZ" name="visitorTZ" />
<script type="text/javascript">
    d = new Date();
    document.getElementById('visitorTZ').value = d.getTimezoneOffset()/60; 
</script>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top