MarsPen / blog

3 stars 0 forks source link

【手写篇 - Day 05】时钟的时针和分针的角度 #5

Open MarsPen opened 2 years ago

MarsPen commented 2 years ago

题目描述

请计算出时钟的时针和分针的角度(两个角度的较小者,四舍五入)。时间以HH:mm的格式传入。

angle('12:00') // 0

angle('23:30') // 165
MarsPen commented 2 years ago

思路

代码

function angle(time) {
  // 分割传入的时间,获取分钟和秒
  const [hour, minutes] = time.split(':').map(Number)
  // 计算出小时的角度,每一个小时是 30 度
  const hourAngle = (360 / 12) * (hour % 12)
  // 计算出分钟的角度, 每一个分钟是 6 度
  const minutesAngle = (360 / 60) * minutes
  // 计算出小时的偏移量, x / 30  =  minutes / 60
  const extra = (360 / 12) * (minutes / 60)
  // 计算出总的角度
  let  finalAngle = Math.abs(hourAngle - minutesAngle + extra)
  // 如果是负数,那么就是需要进行一个反转
  finalAngle =  finalAngle > 180 ? 360 - finalAngle : finalAngle
  // 返回结果
  return Math.round(finalAngle)
}