Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

การแปลงวินาทีเป็นปีวันชั่วโมงและนาทีใน JavaScript


ปัญหา

เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่ใช้ตัวเลข num ซึ่งแทนจำนวนวินาทีเป็นอาร์กิวเมนต์แรกและอาร์กิวเมนต์เดียว

ฟังก์ชันของเราควรสร้างและส่งคืนสตริงที่มีข้อมูลปี วัน ชั่วโมงและนาทีที่อยู่ในวินาทีเหล่านั้น อย่างชัดเจนหากมีเลย

สำหรับจุดประสงค์ของคำถามนี้ เราถือว่าปีทั้งหมดมี 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