JavaScript: التواريخ في JavaScript
آخر تحديث: 2026-10-13
تستخدم JavaScript كائن Date للعمل مع التواريخ والأوقات. فكّر فيه كـ ساعة رقمية — يعرض الوقت الحالي، يتيح لك تعيين أي لحظة، ويمكنه حساب الفرق بين وقتيين.
1. إنشاء والتعامل مع كائنات Date
أربع طرق شائعة لإنشاء Date:
<script>
console.log(new Date()); // التاريخ والوقت الحاليان
console.log(new Date("2025-06-19")); // سلسلة تاريخ
console.log(new Date(2025, 5, 19, 10, 30, 0)); // سنة، شهر، يوم، ساعات، دقائق، ثواني
console.log(new Date(1718764800000)); // طابع زمني (ميلي ثانية)
</script>
مشكلة كبيرة: الأشهر تبدأ من الصفر! 0 = يناير، 11 = ديسمبر. في new Date(2025, 5, 19)، الرقم 5 يعني يونيو وليس مايو. هذه arguably أكثر قرار تصميم انتُقد في كائن Date — على الإطلاق.
(2) الحصول على التاريخ والوقت
| الطريقة | تُرجع | ملاحظة |
|---|---|---|
getFullYear() |
سنة بأربعة أرقام | لا تستخدم getYear() — مهملة |
getMonth() |
0–11 | أضف 1 للشهر الفعلي |
getDate() |
1–31 | يوم الشهر |
getDay() |
0–6 | 0 = الأحد وليس الاثنين! |
getHours() |
0–23 | — |
getMinutes() |
0–59 | — |
getSeconds() |
0–59 | — |
getDay() تُرجع يوم الأسبوع وليس يوم الشهر — استخدم getDate() لذلك. المبتدئون كثيراً ما يخلطون بينهما.
(3) تعيين التاريخ والوقت
توجد مجموعة مطابقة من طرق set: setFullYear()، setMonth()، setDate()، setHours()، setMinutes()، setSeconds(). القيم تتدحرج تلقائياً عند التعيين:
<script>
const d = new Date(2025, 5, 19);
d.setDate(32); // تصبح تلقائياً 2 يوليو
console.log(d.toLocaleDateString());
</script>
(4) تنسيق التواريخ
| الطريقة | مثال المخرجات |
|---|---|
toLocaleDateString() |
"6/19/2025" |
toLocaleTimeString() |
"10:30:00 AM" |
toLocaleString() |
"6/19/2025, 10:30:00 AM" |
هذه الطرق تنسق تلقائياً بناءً على إعدادات_locale للمتصفح.
(5) الطوابع الزمنية وحساب فروقات الوقت
الطابع الزمني هو عدد المليلي ثواني المنقضية منذ 1 يناير 1970 00:00:00 UTC.
<script>
console.log(Date.now()); // الحصول على الطابع الزمني الحالي
console.log(new Date().getTime()); // نفس ما فوق
</script>
النهج الأساسي لحساب فروقات الوقت: طرح طابعين زمنيين للحصول على الفرق بالمليلي ثانية، ثم التحويل:
<script>
const start = Date.now();
for (let i = 0; i < 1000000; i++) {} // محاكاة بعض العمليات
const end = Date.now();
const diff = end - start; // ميلي ثانية
const diffSeconds = diff / 1000; // ثواني
console.log("الوقت المنقضي: " + diff + "مللي ثانية (" + diffSeconds + " ثانية)");
</script>
▶ مثال: عرض التاريخ والوقت الحاليين
▶ جرّب الكود▶ مثال: تفاصيل معلومات التاريخ
▶ جرّب الكود▶ مثال: مؤقت تنازلي
▶ جرّب الكود▶ مثال: حاسبة فرق التاريخ
▶ جرّب الكود❓ أسئلة شائعة
getMonth() يتطلب إضافة 1؟Date في Java صُممت بهذه الطريقة، ورثت JavaScript تلك "التقليد". الجميع يتفق أن التصميم سخيف، لكن لا يمكن تغييره — كثير من الكود الحالي يعتمد على هذا السلوك. فقط احفظه.new Date("2025-06-19") و new Date(2025, 5, 19)؟📖 ملخص
- أنشئ كائنات Date بـ
new Date()،new Date(2024, 0, 1)، أوnew Date("2024-01-01") - دوال الجلب:
getFullYear/getMonth/getDate/getDay/getHours/getMinutes/getSeconds - دوال التعديل تغير كائن Date مباشرة
- تنسيق التواريخ بـ
toLocaleDateString()،toISOString()، أو الربط اليدوي - الطوابع الزمنية بالمللي ثانية؛ استخدم
Date.now()للطابع الحالي
📝 تمارين
- اكتب دالة
formatDate(date)تُعيد سلسلة بالشكل"YYYY-MM-DD (يوم الأسبوع)". تأكد أن الأشهر والأيام تت padding بأصفار. - اكتب دالة
getAge(birthday)تستقبل سلسلة تاريخ (مثل "2000-03-15") وتُعيد العمر الحالي بالسنوات الكاملة. - ابني ميزة "وقت سابق": بتواريخ تاريخ الماضي، اعرض "منذ X سنوات، X أشهر، X أيام" أو "منذ X أيام" أو "منذ X ساعات" — مع اختيار التنسيق المناسب تلقائياً بناءً على فرق الوقت.