समस्या
हमें एक जावास्क्रिप्ट फ़ंक्शन लिखना आवश्यक है जो एक संख्या, संख्या लेता है, जो सेकंड की संख्या को पहले और एकमात्र तर्क के रूप में दर्शाता है।
हमारे फ़ंक्शन को तब एक स्ट्रिंग का निर्माण और वापसी करनी चाहिए जिसमें उन सेकंडों में निहित वर्षों, दिनों, घंटों और मिनटों की जानकारी हो, जाहिर तौर पर अगर यह बिल्कुल भी निहित हो।
इस प्रश्न के प्रयोजन के लिए, हम मानते हैं कि सभी वर्षों में 365 दिन होते हैं
उदाहरण के लिए, यदि फ़ंक्शन का इनपुट है -
const num = 5454776657;
तब आउटपुट होना चाहिए -
const output = '172 years, 353 days, 23 hours, 44 minutes and 17 seconds';
उदाहरण
निम्नलिखित कोड है -
const findTime = (num) => { if(num < 1){ return '0' }; const qualifier = num => (num > 1 ? 's' : '') const numToStr = (num, unit) => num > 0 ? ` ${num} ${unit}${qualifier(num)}` : '' const oneMinute = 60; const oneHour = oneMinute * 60; const oneDay = oneHour * 24; const oneYear = oneDay * 365; const times = { year: ~~(num / oneYear), day: ~~((num % oneYear) / oneDay), hour: ~~((num % oneDay) / oneHour), minute: ~~((num % oneHour) / oneMinute), second: num % oneMinute, }; let str = ''; for (let [key, value] of Object.entries(times)) { str += numToStr(times[key], key) } const arr = str.trim().split(' ') const res = [] arr.forEach((x, i) => { if (i % 2 === 0 && i !== 0) res.push(i === arr.length - 2 ? 'and' : ',') res.push(x) }) return res.join(' ').replace(/\s,/g, ',') } console.log(findTime(5454776657));
आउटपुट
कंसोल आउटपुट निम्नलिखित है -
172 years, 353 days, 23 hours, 44 minutes and 17 seconds