هناك العديد من الطرق للحصول على الطابع الزمني في Nodejs ، مثل:
1. تاريخ جديد (). getTime ()
2. التاريخ. الآن ()
3. Process.uptime ()
4. Process.hrtime ()
إذا كنت ترغب في الحصول على طابع زمني ، فيمكنك استخدام هذه الأساليب. إذن ما هو الفرق بين هذه الطرق؟
تاريخ جديد (). GetTime () و Date.Now ()
هذه الطرق هي من خلال عدد ميلي ثانية من بيئة تشغيل النظام في العقدة. إن تأثير طريقة الكتابة +الجديدة () هو نفس تأثير التاريخ الجديد (). getTime () .
في السيناريوهات التي يتم فيها استخدام الطوابع الزمنية بشكل متكرر ، تحتاج إلى الانتباه إلى أداء الطريقة. من بين هذه الطرق ، Date.Now () لديه أفضل أداء. يمكنك اختباره برمز صغير:
var t1 = new date (). getTime () ؛ var t2 = t1 ؛ var i = 0 ، count = 10000000 ، steral = 0 ؛ for (i = 0 ؛ i <count ؛ i ++) {t2 = new date (). getTime () ؛ الفاصل الزمني = (T2 - T1) ؛} الفاصل الزمني = (T2 - T1) ؛ console.log ('【New Date (). الفاصل الزمني = (T2 - T1) ؛} الفاصل الزمني = (T2 - T1) ؛ console.log ('【+تاريخ جديد】 الفاصل الزمني:' ، الفاصل الزمني) ؛ t1 = تاريخ جديد (). الفاصل الزمني = (T2 - T1) ؛} الفاصل الزمني = (T2 - T1) ؛ console.log ('【date.now ()】 الفاصل:' ، الفاصل الزمني) ؛نتيجة الإخراج:
【تاريخ جديد (). GetTime ()】 الفاصل: 1583
【+تاريخ جديد】 الفاصل الزمني: 2189
【Date.Now ()】 الفاصل: 891
إذا حصلت على الطابع الزمني فقط ، فإن استخدام Date.NOW () هو أفضل طريقة للقيام بذلك ، ولكن إذا كنت ترغب في حساب الفرق الزمني ، فسيواجه هذه الأساليب بعض المشكلات: في بعض الأحيان ستكون هناك عمليات اتصال طفيفة في وقت نظام البيئة الجارية ، وبالتالي فإن الفرق الزمني الذي تم الحصول عليه غير دقيق وأحيانًا سيتم تشغيل بعض الأخطاء.
Process.hrtime ()
هذه الطريقة هي الحصول على كائن طابع زمني دقيق يعتمد على أي نقطة زمنية سابقة تم أخذها والوقت من الحاضر: [ثواني ، نانو ثانية]
> process.hrtime () [3197146 ، 563552237]
هذه الطريقة لا علاقة لها بوقت النظام ، لذلك لن تتأثر بانجراف ساعة النظام ، ولن يكون هناك أي أخطاء عند استخدامها لحساب الفرق الزمني.
لكن كل شيء دائمًا موجود - -
ماذا لو تم استخدامه في مكان يطلق عليه بشكل متكرر؟
var t1 = new date (). getTime () ؛ var t2 = t1 ؛ var i = 0 ، count = 10000000 ، steral = 0 ؛ var hrtime1 = process.hrtime () ؛ var hrtime2 = hrtime1 ؛ t1 = new date (). getTime () ؛ لـ (i = 0 ؛ DATE ().
【hrTime】interval: 6412 6413 إذا كنت تتذكر بشكل صحيح ، نفس عدد الإبداعات ، التاريخ. الآن () أعلاه حوالي 900 مللي ثانية!
Process.hrtime () بطيء جدًا! ! !
اتضح أنه عندما يتعامل Nodejs مع الوقت العالي الدقة ، فإن الحساب معقد نسبيًا ، ويشغل الكثير من موارد النظام ، وله سرعة بطيئة ، لذلك فإن هذه الطريقة ليست مناسبة للتطبيقات عالية التردد. يرجى الاطلاع على process.uptime () أدناه
Process.uptime ()
تستخدم هذه الوظيفة وقت تشغيل NodeJS للحصول على طابع زمني ثانٍ ، وهو دقيق للمللي ثانية:
Process.uptime
المدخلات: 6.419
تعتمد هذه الوظيفة على وقت بدء التشغيل في العقدة ولن تتأثر بانجراف ساعة النظام ، وهي مناسبة لحساب الفرق الزمني.
فكيف هو أداء المكالمات المتعددة؟
var t1 = new date (). getTime () ؛ var t2 = t1 ؛ var i = 0 ، count = 10000000 ، steral = 0 ؛ t1 = process.uptime ()*1000 ؛ لـ (i = 0 ؛ i <count ؛ i ++) {t2 = process.uptime ()*1000 ؛ // الفاصل الزمني = (T2 - T1) ؛} الفاصل الزمني = (T2 - T1) ؛ console.log ('【process.uptime ()】 الفاصل الزمني:' ، الفاصل) ؛الإخراج: [Process.uptime ()] الفاصل الزمني: 954
بالمقارنة مع Process.hrtime () ، فإنه يخلق الكثير من الأداء ~
لا تحسب بدقة ، إنها سريعة!
ثم تحتاج إلى حساب اختلاف الوقت في التردد العالي!
ما سبق هو كل شيء عن الحصول على الفرق بين الطابع الزمني والوقت. آمل أن يكون ذلك مفيدًا للجميع عند استخدام NodeJS.