اذهب إلى المحتوى

السؤال

نشر

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

const date_time = '2022-10-01T00:12:10:19Z';

كيف أتحقق من أن هذا التاريخ لم يأتي بعد، أي أنه مازال في المستقبل بإستخدام JavaScript؟

Recommended Posts

  • 1
نشر

يمكنك استخدام كائن مكتبة momment لمعرفة ما إذا كان التاريخ في المستقبل باستخدام التابع isAfter، والذي يُمرر إليه عادة تاريخ أخر للمقارنة بينهما، لكن إذا لم نمرر أي معاملات له سيقارن التاريخ ما إذا كان في المستقبل كالتالي:

const inFuture = momment(datetime).isAfter()
// يساوي
const inFuture = momment(datetime).isAfter(momment())
//                                         ^^^^^^^^^
//                                            الآن

 

  • 1
نشر

يمكنك التحقق من الزمن بإستخدام جملة شرطية بسيطة في جافاسكربت من خلال مقارنة الزمن في اللحظة الحالية مع الزمن الذي تريد التحقق من أقدميته. لن تكون بحاجة إلى البحث عن دوال معقدة لإنجاز المهمة. تابع المثال التالي

...
<script>
    function checkDate(){ //  تعريف الدالة
        var date = moment("2021-10-13T08:35:47.510Z")// الزمن المطلوب
        var now = moment(); // اللحظة الحالية

        if (now > date) { // مقارنة الزمن المطلوب التحقق منه مع الزمن في اللحظة الحالية
        // date is past
           console.log("الزمن في الماضي") // الزمن الحالي أحدث من المطلوب التحقق منه
        } else {
        // date is future
           console.log("الزمن في المستقبل") // المطلوب التحقق منه لم يأتي بعد
        }
    }
</script>
...
<button onclick="checkDate()"> تحقق من الزمن</button>
...

ملاحظة: يرجى الإنتباه الى صيغة الزمن التي تتحقق منها. قيمة الزمن التي في سؤالك "2022-10-01T00:12:10:19Z" ليست قيمة ISO_8601 معرفة. يتضح ذلك من خلال فحصها بالجملة البرمجية التالية

	moment("2022-10-01T00:12:10:19Z", moment.ISO_8601).isValid() 
	// الناتج يكون false
	

  • 1
نشر

يمكنك استعمال التابع parse بفعالية. حيث يتيح طريقة لاستخراج عدد الثواني بين تاريخ معين و أول جانفي 1970 الساعة 00:00:00.

بعد هذا ستحتاج طرح تمثيل الوقت الحالي من التمثيل الناتج، ان كان الناتج موجبا فان الناتج من الماضي.

let d1 = Date.parse(your_datestring);
let d2 = Date.parse(new Date());

console.log(d2 - d1)

في مثل الحالة التي لديك لا تنسى تحويل datetime الى datestring فيكون كاملا:

let d1 = new Date('2022-10-01T00:12:10.19Z').toDateString();
    d1 = Date.parse(d1);

let d2 = Date.parse(new Date());

console.log(d2 - d1)

الناتج:

-2088323000

تعبر الاشارة عن ان التاريخ من المستقبل.

الكائن Date في JavaScript

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...