JavaScript Development

إتقان التحقق من صحة التاريخ في جافا سكريبت

Spread the love

يُعد التحقق من صحة التاريخ بدقة أمرًا بالغ الأهمية لتطبيقات الويب القوية. فإدخال تواريخ غير صحيحة قد يؤدي إلى أخطاء وتجربة مستخدم سيئة. توفر جافا سكريبت عدة طرق، لكل منها مُحاسن ومساوئ من حيث الدقة والتعقيد والأداء. تستعرض هذه المقالة ثلاث طرق شائعة: الاستفادة من مكتبة moment.js، واستخدام التعبيرات النمطية، واستخدام طريقة Date.parse() المدمجة.

جدول المحتويات

التحقق من صحة التاريخ باستخدام moment.js

تُعد مكتبة moment.js أداة قوية وشائعة الاستخدام للتحكم في التاريخ وتحليله. توفر دالتها isValid() طريقة مباشرة وموثوقة للتحقق من صحة التواريخ. ستحتاج إلى تضمين moment.js في مشروعك (مثلًا، عبر CDN أو npm).


<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.4/moment.min.js"></script>

function isValidDateMoment(dateString, format = 'YYYY-MM-DD') {
  return moment(dateString, format, true).isValid();
}

let date1 = "2024-03-15";
let date2 = "2024-13-15"; // شهر غير صالح
let date3 = "2024-02-29"; // يوم كبيسة صالح
let date4 = "2024-02-30"; // يوم غير صالح لشهر فبراير
let date5 = "March 15, 2024"; // صيغة مختلفة

console.log(isValidDateMoment(date1)); // true
console.log(isValidDateMoment(date2)); // false
console.log(isValidDateMoment(date3)); // true (إذا كانت 2024 سنة كبيسة)
console.log(isValidDateMoment(date4)); // false
console.log(isValidDateMoment(date5, "MMMM DD, YYYY")); // true

تسمح لك معلمة format بتحديد صيغة التاريخ المتوقعة. تضمن علامة true التحليل الدقيق.

التحقق من صحة التاريخ باستخدام التعبيرات النمطية

توفر التعبيرات النمطية نهجًا يدويًا أكثر. وعلى الرغم من قوتها، إلا أن إنشاء تعبير نمطي يعالج جميع الفروق الدقيقة في التاريخ (السنة الكبيسة، أطوال الأشهر) قد يكون معقدًا وعرضة للأخطاء. يُحقق التعبير النمطي البسيط التحقق من الصيغة فقط، وليس صحة التاريخ.


function isValidDateRegex(dateString) {
  // هذا مثال بسيط جدًا ولن يتعامل مع جميع الحالات الحدية!
  return /^d{4}-d{2}-d{2}$/.test(dateString);
}

let date1 = "2024-03-15";
let date2 = "2024-13-15";
let date3 = "2024-02-30";

console.log(isValidDateRegex(date1)); // true (لكن التحقق غير كامل)
console.log(isValidDateRegex(date2)); // true (يُحقق التحقق بشكل غير صحيح)
console.log(isValidDateRegex(date3)); // true (يُحقق التحقق بشكل غير صحيح)

للتحقق من الصحة القوي، هناك حاجة إلى تعبير نمطي أكثر تطوراً، مما يجعل هذا النهج أقل عملية من استخدام مكتبة مثل moment.js.

التحقق من صحة التاريخ باستخدام Date.parse()

تحاول طريقة Date.parse() المدمجة تحويل سلسلة التاريخ إلى طابع زمني. ومع ذلك، فهي غير متسقة للغاية عبر المتصفحات، وقد يؤدي تحليلها المتساهل إلى إيجابيات خاطئة.


function isValidDateParse(dateString) {
  const timestamp = Date.parse(dateString);
  return !isNaN(timestamp);
}

let date1 = "2024-03-15";
let date2 = "2024-13-15";
let date3 = "2024-02-30";

console.log(isValidDateParse(date1)); // true
console.log(isValidDateParse(date2)); // true (يُحقق التحقق بشكل غير صحيح)
console.log(isValidDateParse(date3)); // true (يُحقق التحقق بشكل غير صحيح)

بسبب عدم موثوقيتها، لا يُنصح عمومًا باستخدام Date.parse() للتحقق من صحة التاريخ الصارمة.

اختيار الطريقة المناسبة

للتحقق من صحة التاريخ بشكل موثوق ودقيق، تُعد moment.js الطريقة المفضلة. فهي توفر توازنًا بين سهولة الاستخدام والدقة والمتانة. وبينما تُعد التعبيرات النمطية قوية، إلا أن تعقيدها يجعلها أقل ملاءمة للتحقق الشامل من صحة التاريخ ما لم تكن لديك متطلبات أداء محددة للغاية. تجنب استخدام Date.parse() للتحقق الصارم بسبب عدم اتساقها.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *