/**
 * @파일 형식-time.js
 * @module 형식-시간
 */

/**
 * 초 형식을 시간 문자열(H:MM:SS 또는 M:SS)로 지정합니다. 가이드 제공(in
 * 초)는 앞에 오는 0을 강제로 표시하여 길이를 덮습니다.
 * 가이드.
 *
 * @사적인
 * @param {숫자}초
 * 문자열로 변환할 시간(초)
 *
 * @param {숫자} 가이드
 * 뒤에 문자열을 모델링할 숫자(초)
 *
 * @return {문자열}
 * H:MM:SS 또는 M:SS 형식의 시간
 */
const defaultImplementation = function(seconds, guide) {
  초 = 초 < 0 ? 0 : 초;
  let s = Math.floor(초 % 60);
  let m = Math.floor(초 / 60 % 60);
  let h = Math.floor(초 / 3600);
  const gm = Math.floor(가이드 / 60 % 60);
  const gh = Math.floor(가이드 / 3600);

  // 유효하지 않은 시간 처리
  if (isNaN(초) || 초 === 무한대) {
    // '-'는 모든 관계 연산자에 대해 거짓입니다(예: < , > =) 그래서 이 설정
    // 가이드에서 지정한 최소 필드 수를 추가합니다.
    h = m = s = '-';
  }

  // 시간을 표시해야 하는지 확인
  시간 = (시간 > 0 || ㅎ > 0) ? h + ':' : '';

  // 시간이 표시되면 앞에 0을 추가해야 할 수 있습니다.
  // 항상 최소 한 자리의 분을 표시합니다.
  m = (((h || gm > = 10) && 중 < 10) ? '0' + m : m) + ':';

  // 선행 0이 몇 초 동안 필요한지 확인
  에스 = (들 < 10) ? '0' + s : s;

  h + m + s를 반환합니다.
};

// 현재 구현에 대한 내부 포인터.
let 구현 = defaultImplementation;

/**
 * 기본 formatTime 구현을 사용자 정의 구현으로 바꿉니다.
 *
 * @param {함수} customImplementation
 * 기본 formatTime 대신 사용할 함수
 * 구현. 현재 시간을 초 단위로 수신하고
 * 가이드(초 단위)를 인수로 사용합니다.
 */
내보내기 기능 setFormatTime(customImplementation) {
  구현 = customImplementation;
}

/**
 * formatTime을 기본 구현으로 재설정합니다.
 */
내보내기 기능 resetFormatTime() {
  구현 = defaultImplementation;
}

/**
 * 기본 시간 형식화 기능 또는 사용자 지정
 * `setFormatTime`을 통해 제공되는 함수.
 *
 * 초를 시간 문자열로 포맷합니다(H:MM:SS 또는 M:SS). 공급
 * 가이드(초 단위)는 여러 개의 선행 0을 적용하여
 * 가이드의 길이.
 *
 * @정적
 * @example formatTime(125, 600) === "02:05"
 * @param {숫자}초
 * 문자열로 변환할 시간(초)
 *
 * @param {숫자} 가이드
 * 뒤에 문자열을 모델링할 숫자(초)
 *
 * @return {문자열}
 * H:MM:SS 또는 M:SS 형식의 시간
 */
함수 formatTime(초, 가이드 = 초) {
  반환 구현(초, 가이드);
}

내보내기 기본 형식시간;