كيفية الحصول على الطابع الزمني (timestamp) في JavaScript: 5 طرق مع أمثلة
\n\nكل مطور واجه مرة واحدة على الأقل مهمة: حفظ لحظة زمنية، مقارنة التواريخ، أو إرسال بيانات إلى الخادم. وهنا يأتي دور الطابع الزمني في JavaScript — علامة وقت عالمية تفهمها جميع الأنظمة. في هذا الدليل، سأعرض 5 طرق مثبتة للحصول على الطابع الزمني، وسأحلل إيجابياتها وسلبياتها، وسأجيب على الأسئلة الشائعة من Stack Overflow.
\n\nإذا كنت قد بحثت يومًا عن "how do I get a timestamp in JavaScript" — فأنت لست وحدك. آلاف المطورين يبحثون عن هذه الإجابة كل يوم. دعنا نفهم الموضوع مرة واحدة وإلى الأبد.
\n\nما هو الطابع الزمني ولماذا نحتاجه؟
\n\nالطابع الزمني (Timestamp) هو عدد الميلي ثانية المنقضية منذ 1 يناير 1970 الساعة 00:00:00 بالتوقيت العالمي المنسق (UTC). يُسمى هذا التاريخ Unix epoch. لماذا نحتاج هذا؟
\n\n- \n
- العالمية: الطابع الزمني لا يعتمد على المنطقة الزمنية — إنه UTC خالص. \n
- سهولة التخزين: رقم واحد بدلاً من سلسلة تاريخ. \n
- المقارنة: سهولة حساب الفرق بين لحظتين زمنيتين. \n
- التوافق: الطابع الزمني مفهوم في جميع لغات البرمجة وقواعد البيانات. \n
الآن ننتقل إلى الجزء الممتع — كيفية الحصول عليه في JavaScript.
\n\nالطريقة 1: Date.now() — الأسرع والأكثر إيجازًا
\n\nهذه هي طريقتي المفضلة. Date.now() تُرجع الطابع الزمني بالميلي ثانية في الوقت الحالي. لا كائنات إضافية، لا منشئات — مجرد رقم.
// الحصول على الطابع الزمني الحالي\nconst currentTimestamp = Date.now();\nconsole.log(currentTimestamp); // 1712345678901\n\n// يمكن استخدامه فورًا للقياسات\nconst start = Date.now();\n// ... بعض الكود ...\nconst end = Date.now();\nconsole.log(`استغرق التنفيذ ${end - start} مللي ثانية`);\n\n\nالإيجابيات:
\n- \n
- أقصى أداء (لا إنشاء كائنات) \n
- كود قابل للقراءة وقصير \n
- مدعوم في جميع المتصفحات الحديثة و Node.js \n
السلبيات:
\n- \n
- يُرجع فقط اللحظة الحالية (لا يمكن تحديد تاريخ) \n
استخدم Date.now() عندما تحتاج إلى الطابع الزمني الحالي في JavaScript دون تعقيدات إضافية.
الطريقة 2: new Date().getTime() — الكلاسيكية
\n\nهذه الطريقة مألوفة لكل من عمل مع JavaScript لأكثر من عام. ننشئ كائن Date ونستدعي getTime().
// الحصول على الطابع الزمني عبر كائن Date\nconst timestamp = new Date().getTime();\nconsole.log(timestamp); // 1712345678901\n\n// يمكن الحصول على الطابع الزمني لتاريخ محدد\nconst specificDate = new Date('2024-12-31T23:59:59');\nconst specificTimestamp = specificDate.getTime();\nconsole.log(specificTimestamp); // 1735689599000\n\n\nالإيجابيات:
\n- \n
- يمكن الحصول على الطابع الزمني لأي تاريخ عشوائي \n
- توافق عكسي (يعمل في المتصفحات القديمة) \n
- صيغة بديهية \n
السلبيات:
\n- \n
- ينشئ كائنًا إضافيًا (أبطأ قليلاً من Date.now()) \n
اختر new Date().getTime() عندما تحتاج إلى الحصول على علامة الوقت في JavaScript لتاريخ محدد أو العمل مع لحظات زمنية مختلفة.
الطريقة 3: +new Date() — خدعة علامة الزائد الأحادية
\n\nقليلون يعرفون، لكن علامة الزائد الأحادية تحول كائن Date إلى رقم — طابعه الزمني. يعمل هذا بفضل التحويل القسري للأنواع.
\n\n// طريقة قصيرة ولكنها غير واضحة\nconst timestamp = +new Date();\nconsole.log(timestamp); // 1712345678901\n\n// يمكن حتى بدون أقواس\nconst timestamp2 = +new Date;\nconsole.log(timestamp2); // 1712345678902\n\n\nالإيجابيات:
\n- \n
- كتابة قصيرة جدًا \n