Computer >> Máy Tính >  >> Lập trình >> Javascript

Chuyển đổi giây thành năm ngày giờ và phút trong JavaScript

Vấn đề

Chúng tôi được yêu cầu viết một hàm JavaScript sử dụng một số, num, đại diện cho số giây sau đó làm đối số đầu tiên và duy nhất.

Sau đó, hàm của chúng ta sẽ xây dựng và trả về một chuỗi chứa thông tin về năm, ngày, giờ và phút được chứa trong những giây đó, rõ ràng là nếu có.

Với mục đích của câu hỏi này, chúng tôi cho rằng tất cả các năm đều có 365 ngày

Ví dụ:nếu đầu vào của hàm là -

const num = 5454776657;

Sau đó, đầu ra phải là -

const output = '172 years, 353 days, 23 hours, 44 minutes and 17 seconds';

Ví dụ

Sau đây là mã -

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));

Đầu ra

Sau đây là đầu ra của bảng điều khiển -

172 years, 353 days, 23 hours, 44 minutes and 17 seconds