• + 0 comments

    JS Solution :

    function timeInWords(h, m) {
        // Write your code here
        const hoursInWords = {
            1: 'one',
            2: 'two',
            3: 'three',
            4: 'four',
            5: 'five',
            6: 'six',
            7: 'seven',
            8: 'eight',
            9: 'nine',
            10: 'ten',
            11: 'eleven',
            12: 'twelve'
        }
    
        const minutesInWords = {
            ...hoursInWords,
            13: 'thirteen',
            14: 'fourteen',
            15: 'fifteen',
            16: 'sixteen',
            17: 'seventeen',
            18: 'eighteen',
            19: 'nineteen',
            20: 'twenty'
        }
    
        const toMinutes = 60 - m
    
        if (m === 0) {
            return `${hoursInWords[h]} o' clock`
        } else if (m === 1) {
            return `one minute past ${hoursInWords[h]}`
        } else if (m === 15) {
            return `quarter past ${hoursInWords[h]}`
        } else if (m >= 2 && m <= 20 && m !== 15) {
            return `${minutesInWords[m]} minutes past ${hoursInWords[h]}`
        } else if (m >= 21 && m <= 29) {
            return `twenty ${minutesInWords[m - 20]} minutes past ${hoursInWords[h]}`
        } else if (m === 30) {
            return `half past ${hoursInWords[h]}`
        } else if (m === 45) {
            return `quarter to ${hoursInWords[h === 12 ? 1 : h + 1]}`
        } else if (m === 59) {
            return `one minute to ${hoursInWords[h === 12 ? 1 : h + 1]}`
        } else if (toMinutes > 20) {
            return `twenty ${minutesInWords[toMinutes - 20]} minutes to ${hoursInWords[h === 12 ? 1 : h + 1]}`
        } else {
            return `${minutesInWords[60 - m]} minutes to ${hoursInWords[h === 12 ? 1 : h + 1]}`
        }
    }