export default class TimeFormatter { /** * 인자로 넘긴 숫자를 "~시간 ~분", "~분" 형태로 convert해 return하며 인자로 넘긴 값이 null일 경우 "-"를 return한다 * * 33 -> 33분 * 130 -> 2시간 10분 * null -> "-" * * @public * @static * @return string * @param time 시간 */ static getTimeStringWithUnit(time: number | null) { if (null === time) { return "-"; } if (time >= 60) { const hour = Math.floor(time / 60); const minute = time % 60; return `${hour}시간 ${minute}분`; } return `${time}분`; } /** * date객체를 인자로 넘기면 hour와 minute을 object에 담아 return한다. * 만약 minute가 55이상일 경우 시간을 1시간 추가하고 minute은 0으로 만들어 return한다. * * new Date("2023-12-17T03:24:00Z") -> { hour: 12, minute: 20 } * new Date("2023-12-17T03:58:00Z") -> { hour: 13, minute: 0 } * * @public * @static * @return string * @param date */ static setInitialTime(date: Date): { hour: number; minute: number } { const hour = date.getHours(); const minute = Math.round(date.getMinutes() / 10) * 10; if (60 === minute) { return { hour: hour + 1, minute: 0 }; } return { hour, minute }; } /** * 시간이 입력되면 "~시간 ~분"으로 format하여 return한다. * 만약 value가 60이하이면 "~분"으로 format하여 return한다. * 만약 value가 undefined거나 null이면 "-분"을 return한다. * * 80 -> "1시간 20분" * 22 -> "22분" * undefined or null -> "-분" * * @public * @static * @return string * @param value */ static setTimeUnit(value: number) { const changedValue = value; if (60 < changedValue) { const time = Math.floor(changedValue / 60); const minute = changedValue % 60; return `${time}시간 ${minute}분`; } else { if (null === changedValue || undefined === changedValue) { return "-분"; } return `${changedValue}분`; } } }