Zen Eddin Allaham نشر 25 مايو أرسل تقرير نشر 25 مايو (معدل) الان اصبحت افهم بضع من الاكواد التي اطبقها بفضلكم شكرأ جزيلاً لكم ☺️ لكن تبقى هذه الكود لم افهمه بشكل واضح const formatingTimes = (times) => { if(!times){ return "00:00"; } let [hours , minutes] = times.split(":").map(Number) const perd = hours >= 12 ? "PM" : "AM"; hours = hours % 12 || 12 return `${hours}:${minutes < 10 ? "0" + minutes : minutes} ${perd}` } تم التعديل في 25 مايو بواسطة Mustafa Suleiman تعديل عنوان السؤال 2 اقتباس
0 Mustafa Suleiman نشر 25 مايو أرسل تقرير نشر 25 مايو الفكرة هي تحويل الوقت من صيغة 24 ساعة إلى صيغة 12 ساعة مع إضافة "AM" أو "PM" وذلك من خلال دالة بداخلها المنطق لتنفيذ ذلك واسمها formatingTimes تستطيع استدعائها متى تريد. بها معامل باسم times تستقبل قيمة له وهي الوقت الذي تريد تحويله، وفي حال لم يتم إدخال وقت أي قيمة times فارغة أو null أو undefined، فستعيد "00:00" كقيمة افتراضية. عند استقبال الوقت وليكن مثلاً "14:30" فيتم تقسيمه عند علامة : باستخدام split(":")، فيصبح لديك مصفوفتين، الساعات hours والدقائق minutes. ثم يحول القيمتين إلى أرقام باستخدام map(Number)، لأن split تُعيد نصوص. ولو الساعات أكبر من أو تساوي 12، يتم تعيين "PM" للمتغير perd، والعكس لو أقل من 12، يتم تعيين "AM". ويتم التحويل من خلال عامل باقي القسمة % حيث يتم قسمة الساعات على 12 لتحويل الساعات إلى صيغة 12 ساعة، أي لو الساعة 14 فباقي قسمة 14 % 12 = 2. وفي حال الساعات تساوي 0 وذلك عند منتصف الليل، يتم تحويلها إلى 12 باستخدام || 12 حيث عامل || يعني أو في البرمجة لأن 0 تعني false لذا يتم تعيين القيمة الأخرى بعد || وهي 12 لأنها true وذلك يسمى Short circuiting في جافاكسريبت. ثم تنسيق الدقائق في template literals أو قالب النص في النهاية، كالتالي في حال الدقائق minutes أقل من 10، يتم إضافة صفر قبله مثل 05 بدلاً من 5، حيث يوجد شرط ثلاثي Ternary Operator. minutes < 10 ? "0" + minutes : minutes اقتباس
0 محمد_عاطف نشر 25 مايو أرسل تقرير نشر 25 مايو بتاريخ 15 دقائق مضت قال Hxfhf Ucicic: const formatingTimes = (times) => { أولا هنا نقوم بتعريف الدالة التي تسمى formatingTimes وهذه الدالة تأخذ معامل واحد وهو ال times . بتاريخ 15 دقائق مضت قال Hxfhf Ucicic: if(!times){ return "00:00"; } في هذا الجزء نتحقق من المعامل times فلو كان فارغا فسيتم إعادة القيمة "00:00" . فمثلا لو تم تمرير سلسلة فارغة "" فهنا الشرط سيتحقق وسيتم إعادة تلك القيمة. بتاريخ 15 دقائق مضت قال Hxfhf Ucicic: let [hours , minutes] = times.split(":").map(Number) هنا يتم إستخدام الدالة split وتلك الدالة تقوم بفصل السلاسل النصية إلى أجزاء بناء على النص الذي نريد الفصل عنده وتقوم بإعادة مصفوفة بالنص المفصول . فمثلا لو تم تمرير "15:30" فهنا سيتم فصل السلسلة عند ":" وهكذا سيكون لدينا مصفوفة من عنصرين هما : ["15","30"] بعد نستخدم map لنقوم بتحويل النص إلى رقم ونقوم بعد ذلك بوضع كل جزء في متغير . أى سيتم وضع الساعات في المتغير hours والدقائق في المتغير minutes . بتاريخ 17 دقائق مضت قال Hxfhf Ucicic: const perd = hours >= 12 ? "PM" : "AM"; هنا ننشأ متغير جديد pred وهو يحوي قيمة الوقت سواء كان PM أى مساءا أو AM أى صباحا . حيث نرى لو أن الساعات أكبر من أو تساوي 12 إذا نحن مساءا ونضع PM . بتاريخ 18 دقائق مضت قال Hxfhf Ucicic: hours = hours % 12 || 12 هنا نحن نريد أن نحول الساعات من صيغة 24 إلى 12 ولهذا نقوم بأخذ باقي القسمة على 12 حيث الرمز % هو باقي القسمة وهكذا نستطيع تحويل أى رقم أكبر من 12 إلى 1 حتى 12 . فمثلا لو الساعات 14 سيكون الناتج هو 1 وباقي القسمة 2 إذا الساعة ستكون 2 مساء. بتاريخ 19 دقائق مضت قال Hxfhf Ucicic: return `${hours}:${minutes < 10 ? "0" + minutes : minutes} ${perd}` وأخيرا هنا نعيد الوقت بعد تحويله إلى صيغة 12 ساعة . 1 اقتباس
السؤال
Zen Eddin Allaham
الان اصبحت افهم بضع من الاكواد التي اطبقها بفضلكم شكرأ جزيلاً لكم ☺️
لكن تبقى هذه الكود لم افهمه بشكل واضح
تعديل عنوان السؤال
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.