المؤلف: BUILDER.COM
ليس هناك شك في أن استخدام نصوص JavaScript يمكن أن يعرض بسهولة التوقيت المحلي على صفحة ويب من خلال عرض ساعة المستخدم مباشرة. ولكن ماذا لو كنت تريد عرض الوقت في منطقة مختلفة - على سبيل المثال، إذا كان مقرك الرئيسي في بلد آخر وتريد عرض وقت "الوطن" بدلاً من التوقيت المحلي؟
للقيام بذلك، يجب إجراء حسابات زمنية مختلفة لتحويل التوقيت المحلي إلى وقت الوجهة. تشرح هذه المقالة كيفية إجراء هذه الحسابات.
الخطوة 1:
الخطوة الأولى هي الحصول على التوقيت المحلي. في JavaScript، يمكن بالتأكيد القيام بذلك بسهولة عن طريق تهيئة كائن Data().
// إنشاء كائن تاريخ للموقع الحالي
d = new Date();
عن طريق استدعاء طريقة getTime() لكائن Data()، يمكنك عرض عدد المللي ثانية بين 1 يناير 1970 والوقت الحالي.
// تحويل إلى ميللي ثانية منذ 1 يناير 1970
localTime = d.getTime();
الخطوة 2:
بعد ذلك، ابحث عن قيمة إزاحة التوقيت المحلي من خلال طريقة getTimezoneOffset() لكائن Data(). افتراضيًا، تعرض هذه الطريقة نتيجة قيمة إزاحة المنطقة الزمنية بالدقائق، لذلك يتم تحويل هذه القيمة إلى ميلي ثانية في الحساب السابق.
// الحصول على إزاحة UTC المحلية وتحويلها إلى msec
localOffset =d.getTimezoneOffset
() * 60000؛
تشير القيمة إلى التوقيت المحلي بعد التوقيت العالمي المنسق (UTC).
ملحوظة: إذا كنت تتساءل كيف حصلت على عامل الضرب 60.000، تذكر أن 1000 مللي ثانية تساوي ثانية واحدة، والدقيقة الواحدة تساوي 60 ثانية. لذلك، لتحويل الدقائق إلى ميلي ثانية، اضرب 60 في 1000 وهو ما يساوي 60000.
الخطوة الثالثة
هي إضافة التوقيت المحلي وقيمة إزاحة المنطقة الزمنية المحلية للحصول على التوقيت القياسي الدولي الحالي (UTC).
// الحصول على وقت UTC بالمللي ثانية
utc = localTime + localOffset؛
هنا، يحتوي المتغير utc على الوقت القياسي الدولي الحالي (UTC). ومع ذلك، يتم التعبير عن هذه المرة بعدد المللي ثانية من 1 يناير 1970 إلى الوقت الحاضر. دع الأمر يتم التعبير عنه بهذه الطريقة في الوقت الحالي، حيث لا تزال هناك بعض الحسابات التي يتعين القيام بها.
الخطوة الرابعة هي
الحصول على التوقيت القياسي الدولي (UTC)، ثم الحصول على قيمة الإزاحة بالساعة للتوقيت القياسي الدولي (UTC) للمدينة المستهدفة، وتحويلها إلى ميلي ثانية، وإضافة التوقيت القياسي الدولي (UTC).
// الحصول على إزاحة التوقيت العالمي المنسق للوجهة وإضافتها
// على سبيل المثال، بومباي
// وهي
إزاحة UTC + 5.5 ساعة = 5.5;
Bombay = UTC + (3600000
*offset);
العوامل، تذكر أن 1000 مللي ثانية يساوي ثانية واحدة، والساعة الواحدة تساوي 3600 ثانية. لذلك، لتحويل الساعات إلى ميلي ثانية، اضرب 3600 في 1000 وهو ما يساوي 3600000.
في هذا الوقت، يحتوي المتغير Bombay على التوقيت المحلي لمدينة مومباي، الهند. يتم التعبير عن هذا التوقيت المحلي بعدد المللي ثانية من 1 يناير 1970 إلى الوقت الحاضر. من الواضح أن هذا غير منطقي، لذا يتعين علينا إجراء بعض الحسابات.
الخطوة الخامسة
هي تهيئة كائن Data() جديد واستدعاء طريقة toLocalString() لهذا الكائن. نقوم بتحويل قيمة الوقت المحسوبة في الخطوة السابقة إلى سلسلة تاريخ/وقت يمكن للجميع فهمها.
// تحويل قيمة مللي ثانية إلى تاريخ string
nd = new Date(
bombay
document.writeln("توقيت بومباي هو" + nd.toLocaleString() + "<br>");
بعدتلخيص
الخطوات المذكورة أعلاه وفهمها، دعونا نلقي نظرة أخرى على هذا البرنامج النصي (القائمة أ)، الذي ينشئ دالة مدمجة ومخصصة calcTime() تنفذ جميع العمليات الحسابية وترجع قيمة زمنية.
القائمة A
<html>
<head>
<script language="JavaScript">
// دالة لحساب التوقيت المحلي
// في مدينة مختلفة
// بالنظر إلى دالة الإزاحة UTC الخاصة بالمدينة
calcTime(city, offset) {
// إنشاء كائن تاريخ لـ الموقع الحالي
د = تاريخ جديد ()؛
// التحويل إلى ميللي ثانية
// إضافة إزاحة المنطقة الزمنية المحلية
// الحصول على وقت UTC بالميللي ثانية
utc = d.getTime() + (d.getTimezoneOffset() * 60000);
// إنشاء كائن تاريخ جديد لمدينة مختلفة
// باستخدام الإزاحة المتوفرة
nd = new Date(utc + (3600000*offset));
// إرجاع الوقت كسلسلة
return "التوقيت المحلي في " + city + " هو " + nd.toLocaleString()
}
// الحصول على تنبيه وقت بومباي
(calcTime('Bombay', '+5.5'))
; احصل على تنبيه التوقيت في سنغافورة
(calcTime('Singapore', '+8'));
// احصل على
تنبيه التوقيت في لندن(calcTime('London', '+1'));
</script>
</head>
<body>
< /body>
</html>
هنا، تقبل الدالة calcTime() اسم المدينة وقيمة إزاحة التوقيت العالمي المنسق (UTC) الخاصة بها (بالساعات). ثم يقوم داخليًا بتنفيذ جميع الحسابات الموضحة أعلاه ويعيد سلسلة تحتوي على التوقيت المحلي لهذه المدينة.
فيما يلي بعض نماذج المخرجات من القائمة أ.
التوقيت المحلي لمومباي هو 4:43:51 مساءً يوم الاثنين 1 أغسطس 2005
بالتوقيت المحلي لسنغافورة هو 7:13:51 مساءً يوم الاثنين 1 أغسطس 2005
بالتوقيت المحلي للندن هو 1 أغسطس 2005، الاثنين 12:13:51 مساءً
في المرة القادمة التي تجلس فيها لكتابة برنامج نصي للمنطقة الزمنية لصفحة الويب الخاصة بك، نأمل أن يوفر لك هذا البرنامج النصي بعض الوقت. يتمتع! !