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

استفسار عن افضل طريقة ل تحويل نظام الساعات

محمود السعيد عوف

السؤال

السلام عليكم ورحمة الله وبركاته اردت ان اعمل نظاما بسيطا ب جافا سكريبت يقوم بتحويل الساعة من نظام 24 ساعة الي 12 والعكس صحيح ايضا 
فقمت بكتابة الكود التالي ونجح معي وذهبت الي منصة تحديات كودر هب لكن لم ينجح معي واظهر لي ان الكود غير صحيح 
فهل هناك خطا ام ماذا وايضا ما هي افضل طريقة ممكنة لتحويل نظام الساعات واتمني ان يكون هناك شرح مع الاكواد 



function convert_time(time) {
    if (time.startsWith("13") || time.startsWith("14") || time.startsWith("15") || time.startsWith("16") || time.startsWith("17") || time.startsWith("18") || time.startsWith("19") || time.startsWith("20") || time.startsWith("21") || time.startsWith("22") || time.startsWith("23")) {
        time = time.split(":")
        let d = parseInt(time[0])
        time.push("pm")
        let h = String(time).replace(",", ":")
        let g = h.replace(",", " ")
        let z = g.replace(g[0], "")
        let u = z.replace(g[1], "")
        let y = parseInt(d) - 12 + u
        return y
    };
    if (time.startsWith("00")) {
        time = time.split(":")
        let d = parseInt(time[0])
        time.push("pm")
        let h = String(time).replace(",", ":")
        let g = h.replace(",", " ")
        let z = g.replace(g[0], "")
        let u = z.replace(g[1], "")
        let y = parseInt(d) + 12 + u
        return y
    }
    // write your code here
    if (time.startsWith("12") && time.endsWith("am")) {
        time = time.split(":")
        time = String(time).replace("pm", "")
        time = String(time).replace("12", "00")
        time = String(time).replace("am", "")

    }
    else if (time.startsWith("12") && time.endsWith("pm")) {
        time = time.split(":")
        time[0] = +time[0]
        time = String(time).replace("pm", "")
        time = String(time).replace("am", "")
    };
    if (time.endsWith("pm")) {
        time = time.split(":")
        time[0] = +time[0] + 12
        time = String(time).replace("pm", "")
    }

    else {
        time = time.split(":")
        time = String(time).replace("am", "")

    };


   
    return String(time).replace(",", ":")
}

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

مرحبًا،

الكود الخاص بك يحتوي على الكثير من if..else و هذا غير جيد بشكل عام، أنت تقوم بالاعتماد على معرفتك الدقيقة للخرج و كتابة كل شيء بشكل مباشر في الكود بدل الاعتماد على قدرة الكود على كتابة الأفكار العامة.

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

سنقوم بكتابة تابع في البداية و لندعوه decodeTime يقوم بأخذ الساعة (بدون معرفة فيما إذا كانت بنظام 12 أو 24) و يعيد لنا 3 متغيرات (يمكنك إعادتهم ضمن مصفوفة مثلا) الأول يمثل الساعة و الثاني يمثل الدقيقة و الثالث يمثل الثواني، طبعًا كل هذه المتغيرات من النمط integer. أيضًا نكتب تابع آخر يقوم بالعملية بشكل عكسي و سندعوه encodeTime، بحيث يأخذ مصفوفة من قيم الساعة و يعيد الساعة على شكل سلسلة نصية.

ثم سنقوم بالتحقق فيما إذا كان الكود يتبع لنظام ال 12 أو 24 عن طريق التحقق فيما إذا كان ينتهي ب pm, am، هذا قمت به أنت في مرحلة من مراحل كودك لذلك أعتقد أنك تستطيع القيام بذلك. بعد التحقق من ذلك سيكون لدينا إما تحقق الشرط أو لا.

في حال تحقق الشرط أي نحن في نظام ال 12 ساعة، نقوم بإزالة am أو pm من الكود (مع معرفة أيهما موجود)، و نقوم بتمرير ما تبقى و الذي يمثل الساعة الى التابع decodeTime الذي سبق و كتبناه بحيث يعيد لنا هذه الأمور على شكل أعداد صحيحة. الآن كل ما علينا القيام به هو إضافة 12 إلى المتغير الذي يحمل رقم الساعات في حال كان الوقت pm، أو لا نضيف أي شيء في حال كان am. ثم نقوم بتمرير القيم الجديدة للمصفوفة إلى التابع encodeTime بحيث يقوم بإعادتها على شكل سلسلة نصية.

حاليًا قمنا بشكل صحيح بالتحويل من نظام 12 ساعة إلى نظام 24 ساعة بسهولة.

أما في الحالة العكسية، فنقوم في البداية باستدعاء التابع decodeTime مباشرة (بما أنه ليس لدينا am, pm في الوقت)، و نقوم بالتحقق فيما إذا كانت الساعات أكبر من 12، في تلك الحالة نقوم بطرح 12 منها، و نضع التوقيت أنه pm و إلا لا نقوم بطرح أي شيء و نضع التوقيت أنه am. نقوم بتمرير المصفوفة الخاصة بالوقت إلى الدالة encodeTime للحصول على الوقت، من ثم نقوم بإضافة am أو pm إلى نهاية السلسلة النصية الناتجة.

بشكل عام كما تلاحظ الكود ليس صعب، فكرة كتابة تابع يقوم بتقسيم الوقت و إرجاعه على شكل مصفوفة من الأعداد الصحيحة تسهل عليك العمل بشكل كبير.

تحياتي.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 10 ساعة قال Kais Hasan:

مرحبًا،

الكود الخاص بك يحتوي على الكثير من if..else و هذا غير جيد بشكل عام، أنت تقوم بالاعتماد على معرفتك الدقيقة للخرج و كتابة كل شيء بشكل مباشر في الكود بدل الاعتماد على قدرة الكود على كتابة الأفكار العامة.

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

سنقوم بكتابة تابع في البداية و لندعوه decodeTime يقوم بأخذ الساعة (بدون معرفة فيما إذا كانت بنظام 12 أو 24) و يعيد لنا 3 متغيرات (يمكنك إعادتهم ضمن مصفوفة مثلا) الأول يمثل الساعة و الثاني يمثل الدقيقة و الثالث يمثل الثواني، طبعًا كل هذه المتغيرات من النمط integer. أيضًا نكتب تابع آخر يقوم بالعملية بشكل عكسي و سندعوه encodeTime، بحيث يأخذ مصفوفة من قيم الساعة و يعيد الساعة على شكل سلسلة نصية.

ثم سنقوم بالتحقق فيما إذا كان الكود يتبع لنظام ال 12 أو 24 عن طريق التحقق فيما إذا كان ينتهي ب pm, am، هذا قمت به أنت في مرحلة من مراحل كودك لذلك أعتقد أنك تستطيع القيام بذلك. بعد التحقق من ذلك سيكون لدينا إما تحقق الشرط أو لا.

في حال تحقق الشرط أي نحن في نظام ال 12 ساعة، نقوم بإزالة am أو pm من الكود (مع معرفة أيهما موجود)، و نقوم بتمرير ما تبقى و الذي يمثل الساعة الى التابع decodeTime الذي سبق و كتبناه بحيث يعيد لنا هذه الأمور على شكل أعداد صحيحة. الآن كل ما علينا القيام به هو إضافة 12 إلى المتغير الذي يحمل رقم الساعات في حال كان الوقت pm، أو لا نضيف أي شيء في حال كان am. ثم نقوم بتمرير القيم الجديدة للمصفوفة إلى التابع encodeTime بحيث يقوم بإعادتها على شكل سلسلة نصية.

حاليًا قمنا بشكل صحيح بالتحويل من نظام 12 ساعة إلى نظام 24 ساعة بسهولة.

أما في الحالة العكسية، فنقوم في البداية باستدعاء التابع decodeTime مباشرة (بما أنه ليس لدينا am, pm في الوقت)، و نقوم بالتحقق فيما إذا كانت الساعات أكبر من 12، في تلك الحالة نقوم بطرح 12 منها، و نضع التوقيت أنه pm و إلا لا نقوم بطرح أي شيء و نضع التوقيت أنه am. نقوم بتمرير المصفوفة الخاصة بالوقت إلى الدالة encodeTime للحصول على الوقت، من ثم نقوم بإضافة am أو pm إلى نهاية السلسلة النصية الناتجة.

بشكل عام كما تلاحظ الكود ليس صعب، فكرة كتابة تابع يقوم بتقسيم الوقت و إرجاعه على شكل مصفوفة من الأعداد الصحيحة تسهل عليك العمل بشكل كبير.

تحياتي.

عذرا لكن نسيت ما معني تابع هلا توضح لي؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 1 ساعة قال محمود السعيد عوف:

عذرا لكن نسيت ما معني تابع هلا توضح لي؟

تابع المقصود به Method أو طريقة وتلك دالة تكون داخل كائن أو Class صنف حيث نصل لتلك الدالة من خلال النقطة . أما الدالة خارج الكائن أو الصنف تسمى دالة فقط.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...