자바 스크립트 초에서 분 및 초


170

이것은 일반적인 문제이지만 해결 방법을 잘 모르겠습니다. 아래 코드는 정상적으로 작동합니다.

var mind = time % (60 * 60);
var minutes = Math.floor(mind / 60);

var secd = mind % 60;
var seconds = Math.ceil(secd);

그러나 1 시간 또는 3600 초에 도달하면 0 분 0 초가 반환됩니다. 이것을 피하여 어떻게 모든 분을 반환합니까?

감사


시간 = 3600 일 때 3600 % 3600은 항상 0이므로 계산에 따라 다른 모든 것은 0이되기 때문입니다.
MSI

답변:


338

전체 분 수를 얻으려면 총 초 수를 60 (60 초 / 분)으로 나눕니다.

var minutes = Math.floor(time / 60);

그리고 남은 초를 얻으려면 전체 분에 60을 곱하고 총 초에서 빼십시오.

var seconds = time - minutes * 60;

이제 전체 시간도 가져 오려면 총 초 수를 3600 (60 분 / 시간 · 60 초 / 분)으로 먼저 나눈 다음 나머지 초를 계산하십시오.

var hours = Math.floor(time / 3600);
time = time - hours * 3600;

그런 다음 전체 분과 남은 초를 계산합니다.

보너스:

다음 코드를 사용하여 시간을 예쁘게 인쇄하십시오 (Dru에서 제안 함).

function str_pad_left(string,pad,length) {
    return (new Array(length+1).join(pad)+string).slice(-length);
}

var finalTime = str_pad_left(minutes,'0',2)+':'+str_pad_left(seconds,'0',2);

57
'var seconds = time % 60'을 수행하여 남은 초를 얻는 것이 조금 더 깨끗합니다.
Edward D' Souza

11
@Radio 다음을 사용하여 선행 0 추가 function str_pad_left(string,pad,length){ return (new Array(length+1).join(pad)+string).slice(-length); } var finalTime = str_pad_left(minutes,'0',2)+':'+str_pad_left(seconds,'0',2);
Dru

1
이 솔루션은의 음수 값에는 작동하지 않습니다 time. 예를 들어 -1 초를 입력하면 -1 분 59 초를 돌려
받습니다

5
부정적인 생각은 무엇입니까 time? 논리적으로 시간 차이가 긍정적 항상
mcont는

4
모듈러스를 사용하여 초 수를 얻을 수 있으며 내 의견으로는 더 읽기 쉽습니다. var seconds = time % 60
JCM

106

또 다른 멋진 솔루션 :

function fancyTimeFormat(duration)
{   
    // Hours, minutes and seconds
    var hrs = ~~(duration / 3600);
    var mins = ~~((duration % 3600) / 60);
    var secs = ~~duration % 60;

    // Output like "1:01" or "4:03:59" or "123:03:59"
    var ret = "";

    if (hrs > 0) {
        ret += "" + hrs + ":" + (mins < 10 ? "0" : "");
    }

    ret += "" + mins + ":" + (secs < 10 ? "0" : "");
    ret += "" + secs;
    return ret;
}

~~의 약칭입니다 Math.floor. 자세한 내용은 이 링크 를 참조하십시오.

온라인으로 시도


14
의 의미는 ~~무엇입니까?
mcont

9
기본적인 기본 사항 Math.floor이 링크를 참조하십시오 .
lapin

잘 작동합니다 ..... :) 다음과 같이 값을 반올림 할 수 있습니다 hrs = hrs.toFixed (0); 분 = mins.toFixed (0); secs = secs.toFixed (0);
압둘 칼리 크

1
이 솔루션에 감사드립니다! time = math.round(time)첫 줄에 추가 하여 반올림했습니다.
fotoflo

이것이 더 정확한 해결책입니다. 위에서 언급 한 것처럼이 페이지에서 가장 많은 표를 얻은 솔루션은 180 초를 2m60으로 표시합니다.
SongBox

71

사람들에게 초를 형식화하는 빠르고 간단하고 짧은 해결책을 기대하면서 M:SS:

function fmtMSS(s){return(s-(s%=60))/60+(9<s?':':':0')+s}

... 수행
기능은 받아들 중 하나Number (선호) 또는String (당신이 앞에 붙이는 반으로 줄일 수 2 변환 '처벌' +에 대한 함수 호출의 인수 s에 같이 fmtMSS(+strSeconds)) 양의 정수 초 나타내는 s인수로합니다.

예 :

fmtMSS(    0 );  //   0:00
fmtMSS(   '8');  //   0:08
fmtMSS(    9 );  //   0:09
fmtMSS(  '10');  //   0:10
fmtMSS(   59 );  //   0:59
fmtMSS( +'60');  //   1:00
fmtMSS(   69 );  //   1:09
fmtMSS( 3599 );  //  59:59
fmtMSS('3600');  //  60:00
fmtMSS('3661');  //  61:01
fmtMSS( 7425 );  // 123:45

고장:

function fmtMSS(s){   // accepts seconds as Number or String. Returns m:ss
  return( s -         // take value s and subtract (will try to convert String to Number)
          ( s %= 60 ) // the new value of s, now holding the remainder of s divided by 60 
                      // (will also try to convert String to Number)
        ) / 60 + (    // and divide the resulting Number by 60 
                      // (can never result in a fractional value = no need for rounding)
                      // to which we concatenate a String (converts the Number to String)
                      // who's reference is chosen by the conditional operator:
          9 < s       // if    seconds is larger than 9
          ? ':'       // then  we don't need to prepend a zero
          : ':0'      // else  we do need to prepend a zero
        ) + s ;       // and we add Number s to the string (converting it to String as well)
}

참고 : (0>s?(s=-s,'-'):'')+반환 식 앞에 추가하여 음수 범위를 추가 할 수 있습니다 (실제로 (0>s?(s=-s,'-'):0)+잘 작동 함).


Math.floor(s)더 깨끗한 결과를 위해 마지막 줄에 추가 하는 것이 좋습니다 . 어쨌든 잘 작동합니다, 감사합니다!
Diego Fortes

@PossessWithin : 아니, 당신은해야 하지 무엇보다도 때문에, 여러 가지 이유로 (고장 - 조각의) "마지막 줄에 Math.floor (들)을 추가" 그 버그를 소개하는 것 사이의 값 910추가 수정없이를; 당신은 예를 들어, 입력 한 경우 69.25다음 출력이 될 것 1:9대신에 1:09! 이 함수 (정수로 명시 적으로 정수 초를 지정 함)는 높은 성능의 크 런칭 도구 / '엔진'(크기로 닌자 골프가 아님)으로 의도되고 사랑스럽게 만들어 졌으므로 불필요한 검증으로 엔진에 부담을주는 데 부적합하다고 생각합니다 / cleanup / filtering ...
GitaarLAB 2016 년

... 응용 프로그램에서 발생할 수있는 특정 요구 사항과 가능한 입력 값을 기반으로 함수를 호출하기 전에 프로그래머가 수행해야하는 작업 (예 NaN: +/-Infinity등) 및 반올림 옵션 ! 예상되는 입력 값에 대한 도메인 지식이 특정 유스 케이스가 거의 항상 부동 소수점 값을 수신 하고 perf-testing이 애플리케이션을 표시한다고 표시하는 경우 당연히 패치를 적용 할 수 있습니다 . 당신이 패치 할 귀하의 경우 에만 양의 값의 바닥재 을 수행해야합니다 ....
GitaarLAB

... 수정 (9<s?':':':0')(10>s?':0':':')(1 개 문자를 추가하지만, "희생"5 6 중 트루 경로 거짓 경로들), 또는 (10<=s?':':':0')(2 개 문자를 추가하지만, 5 (6)의 출력에 해당 경로를 유지). 그리고 나는 조언 이 최종 후행을 변경 +s+(s|0) 대신 Math.floor(s) 의 아름다움을 파괴하지에 같이 하지 해결 및 호출에 필요한 Math.floor 하면서 여전히 이상 제대로 작동 전체 53bit의 +/-MAX_SAFE_INTEGER'단지'(서명) 32 비트 또는 31bit 대신 범위 (서명) 범위를! 참고 ABS(s)있습니다 ... 서명 있도록 magnetude가 60보다 작게 보장
GitaarLAB

... 비트 단위로 서명하거나 안전합니다. 또한 남은 초를 바닥에 두지 않고이 특정 수정 은 함수를 분수 초로 끝나지 않고 분수 초를 출력 하지만 종종 0이 아닌 소수 자릿수를 가지므로 처리해야 할 수도 있습니다. 음의 범위에 대한 선택적 사전 수정 코드와 결합 할 때 마지막으로,이 특정 수정 효과적으로 것이다 TRUNCATE 초를 (안 바닥 을). PS: PFFT, whoever came up with just 512 char limit for any meaningful comment should be...
GitaarLAB 2016 년

21

기본 Date 객체를 사용할 수도 있습니다.

var date = new Date(null);
date.setSeconds(timeInSeconds);

// retrieve time ignoring the browser timezone - returns hh:mm:ss
var utc = date.toUTCString();
// negative start index in substr does not work in IE 8 and earlier
var time = utc.substr(utc.indexOf(':') - 2, 8)

// retrieve each value individually - returns h:m:s
var time = date.getUTCHours() + ':' + date.getUTCMinutes() + ':' +  date.getUTCSeconds();

// does not work in IE8 and below - returns hh:mm:ss
var time = date.toISOString().substr(11, 8);

// not recommended - only if seconds number includes timezone difference
var time = date.toTimeString().substr(0, 8);

물론이 솔루션은 24 시간 미만의 timeInSeconds에 대해서만 작동합니다.)


1
Date 객체가 서식을 처리하도록 할 생각은 없었습니다. 융통성이 떨어지지 만 hh : mm : ss (또는 그 하위 섹션)를
원한다면

나는 이것을 25 초로 시도하고 01:00:25를 반환했는데 이는 1 시간 25 초에 해당합니다.
timstermatic

예, 아마도 시간대 때문일 것입니다. 이 사례를 처리하기 위해 솔루션을 업데이트했습니다.
hamczu

date또한 같이 구성 될 수있다var date = new Date(timeInSeconds * 1000)
누누 안드레

20

2019 최고의 변형

체재 hh:mm:ss

console.log(display(60 * 60 * 2.5 + 25)) // 2.5 hours + 25 seconds

function display (seconds) {
  const format = val => `0${Math.floor(val)}`.slice(-2)
  const hours = seconds / 3600
  const minutes = (seconds % 3600) / 60

  return [hours, minutes, seconds % 60].map(format).join(':')
}


흠, secondsconst입니다. 다시 할당 할 수 없습니다.
ronapelbaum

@ronapelbaum이 주장은 일정하지 않습니다. 무슨 말인지 이해하지 못합니다
Илья Зеленько 2016 년

@ronapelbaum 당신이 매개 변수로 사용하는 대신 초를 할당하면 let예를 들어 function display (state) { let seconds = state.seconds; ... }오류가 발생한 곳 일 수 있습니까?
retrovertigo 2016 년

함수 매개 변수는 const로 처리해야합니다. 사용할 %=때이 매개 변수를 다시 할당합니다. 그냥 사용seconds%60
ronapelbaum

16
function secondsToMinutes(time){
    return Math.floor(time / 60)+':'+Math.floor(time % 60);
}

3
이것은 초를 0으로 채우면 개선 될 수 있습니다. function secondsToMinutes(time){ return Math.floor(0 / 60)+':'+('0'+Math.floor(0 % 60)).slice(-2); }
Kus

좋은! @Kus 감사합니다. 그냥 당신이 두 교체 할 수 있습니다 0으로들 time, 나는 올바른입니까?
mikey

2
@mikey 죄송합니다! 예function secondsToMinutes(time){ return Math.floor(time / 60) + ':' + ('0' + Math.floor(time % 60)).slice(-2) }
Kus

12

선행 0을 추가하려면 다음을 수행하십시오.

var minutes = "0" + Math.floor(time / 60);
var seconds = "0" + (time - minutes * 60);
return minutes.substr(-2) + ":" + seconds.substr(-2);

좋고 짧은


9

ES6를 사용하여 하나의 라이너 청소


const secondsToMinutes = seconds => Math.floor(seconds / 60) + ':' + ('0' + Math.floor(seconds % 60)).slice(-2);

6

하나의 라이너 (시간과 함께 일하지 않은 작업) :

 function sectostr(time) {
    return ~~(time / 60) + ":" + (time % 60 < 10 ? "0" : "") + time % 60;
 }

4

초받는-사람 h : mm : ss

var hours = Math.floor(time / 3600);
time -= hours * 3600;

var minutes = Math.floor(time / 60);
time -= minutes * 60;

var seconds = parseInt(time % 60, 10);

console.log(hours + ':' + (minutes < 10 ? '0' + minutes : minutes) + ':' + (seconds < 10 ? '0' + seconds : seconds));

minutes < 10 ? '0' + minutes : minutes기본 js 지식 만 가정하면 누군가 나를 설명 할 수 있습니까 ?
Zediiiii

분이 한 자릿수 (<10)이면 앞에 0이 붙지 않습니다.
kayz1

도움이됩니다! 나는 "?"몰랐다 js의 삼항 연산자였습니다.
Zediiiii

4

다음 기능은 일, 시간, 분, 초를 얻는 데 도움이됩니다.

toDDHHMMSS(inputSeconds){
        const Days = Math.floor( inputSeconds / (60 * 60 * 24) );
        const Hour = Math.floor((inputSeconds % (60 * 60 * 24)) / (60 * 60));
        const Minutes = Math.floor(((inputSeconds % (60 * 60 * 24)) % (60 * 60)) / 60 );
        const Seconds = Math.floor(((inputSeconds % (60 * 60 * 24)) % (60 * 60)) % 60 );
        let ddhhmmss  = '';
        if (Days > 0){
            ddhhmmss += Days + ' Day ';
        }
        if (Hour > 0){
            ddhhmmss += Hour + ' Hour ';
        }

        if (Minutes > 0){
            ddhhmmss += Minutes + ' Minutes ';
        }

        if (Seconds > 0){
            ddhhmmss += Seconds + ' Seconds ';
        }
        return ddhhmmss;
    }
alert( toDDHHMMSS(2000));

난이게 좋아. 내가 변경 if (Days > 0){ ddhhmmss += Days + ' Day '; }하는 if (Days > 0) {ddhhmmss += Days === 1 ? Days + ' Day ' : Days + ' Days '};1 Day, 2 Days, 3 Days등 다른 사람을 위해 할 수있는 유사.
Ste

4

이 모든 후, 또 다른 간단한 해결책 :

const time = new Date(null);
time.setSeconds(7530);
console.log(time.getHours(), time.getMinutes(), time.getSeconds());

1
이어야 할 때 time.setSeconds(1);반환을 사용 합니다 . 1 0 10 0 1
Ste

3

이것에 대한 또 다른 훨씬 더 우아한 해결책은 다음과 같습니다.

/**
 * Convert number secs to display time
 *
 * 65 input becomes 01:05.
 *
 * @param Number inputSeconds Seconds input.
 */
export const toMMSS = inputSeconds => {
    const secs = parseInt( inputSeconds, 10 );
    let minutes = Math.floor( secs / 60 );
    let seconds = secs - minutes * 60;

    if ( 10 > minutes ) {
        minutes = '0' + minutes;
    }
    if ( 10 > seconds ) {
        seconds = '0' + seconds;
    }

    // Return display.
    return minutes + ':' + seconds;
};

2

제로를 추가하기 위해 실제로 예를 들어 간단히 사용할 수있는 다른 기능이 필요하지 않습니다.

var mins=Math.floor(StrTime/60);
var secs=StrTime-mins * 60;
var hrs=Math.floor(StrTime / 3600);
RoundTime.innerHTML=(hrs>9?hrs:"0"+hrs) + ":" + (mins>9?mins:"0"+mins) + ":" + (secs>9?secs:"0"+secs);

그렇기 때문에 우선 조건문이 있습니다.

(조건? true 인 경우 : false 인 경우) 초가 9 초 이상인 경우 초를 표시하는 것보다 그렇지 않으면 문자열 0을 앞에 추가하십시오.


2

시도해보십시오 : 초를 HOURS, MIN 및 SEC로 변환하십시오.

function convertTime(sec) {
    var hours = Math.floor(sec/3600);
    (hours >= 1) ? sec = sec - (hours*3600) : hours = '00';
    var min = Math.floor(sec/60);
    (min >= 1) ? sec = sec - (min*60) : min = '00';
    (sec < 1) ? sec='00' : void 0;

    (min.toString().length == 1) ? min = '0'+min : void 0;    
    (sec.toString().length == 1) ? sec = '0'+sec : void 0;    

    return hours+':'+min+':'+sec;
}

2

var seconds = 60;
var measuredTime = new Date(null);
measuredTime.setSeconds(seconds); // specify value of SECONDS
var Time = measuredTime.toISOString().substr(11, 8);
document.getElementById("id1").value = Time;
<div class="form-group">
  <label for="course" class="col-md-4">Time</label>
  <div class="col-md-8">
    <input type="text" class="form-control" id="id1" name="field">Min
  </div>
</div>


2

당신이 사용하는 경우 Moment.js을 당신은 내장이 사용할 수있는 Duration객체

const duration = moment.duration(4825, 'seconds');

const h = duration.hours(); // 1
const m = duration.minutes(); // 20
const s = duration.seconds(); // 25

2

2020 업데이트

기본적인 수학과 간단한 자바 스크립트를 사용하면 몇 줄의 코드로 수행 할 수 있습니다.

예-로 변환 7735 seconds합니다 HH:MM:SS.


수학 :

계산 사용 :

  1. Math.floor()-https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/floor

Math.floor()함수는 주어진 숫자보다 작거나 같은 가장 큰 정수를 반환합니다.

  1. %연산기 (나머지) - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Remainder

나머지 연산자는 한 피연산자가 두 번째 피연산자로 나눌 때 남은 나머지를 반환합니다. 항상 배당금의 표시를받습니다.

아래 코드를 확인하십시오. 초는 3600시간과 분을 얻기 위해 나뉘어지며 나머지는 분과 초를 계산하는 데 사용됩니다.

HOURS => 7735 / 3600 = 2 remainder 535

MINUTES => 535 / 60 = 8 remainder 55

SECONDS => 55


선도적 인 제로스 :

- 많은 대답은 여기에 제로를 선도 적절한 방법으로 시간, 분, 초 표시 번호 복잡한 방법을 사용 45, 04등이 사용하여 수행 할 수 있습니다 padStart(). 이것은 문자열에서 작동하므로 숫자를 사용하여 문자열로 변환해야합니다 toString().

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart

padStart()메소드는 결과 문자열이 주어진 길이에 도달 할 때까지 현재 문자열을 다른 문자열로 채 웁니다 (필요한 경우 여러 번). 패딩은 현재 문자열의 시작 부분부터 적용됩니다.


암호:

function secondsToTime(e){
    var h = Math.floor(e / 3600).toString().padStart(2,'0'),
        m = Math.floor(e % 3600 / 60).toString().padStart(2,'0'),
        s = Math.floor(e % 60).toString().padStart(2,'0');
    
    return h + ':' + m + ':' + s;
}

console.log(secondsToTime(7735));  //02:08:55

/*
secondsToTime(SECONDS) => HH:MM:SS 

secondsToTime(8)       => 00:00:08 
secondsToTime(68)      => 00:01:08
secondsToTime(1768)    => 00:29:28
secondsToTime(3600)    => 01:00:00
secondsToTime(5296)    => 01:28:16
secondsToTime(7735)    => 02:08:55
secondsToTime(45296)   => 12:34:56
secondsToTime(145296)  => 40:21:36
secondsToTime(1145296) => 318:08:16
*/


1

시간의 분과 초를 추적하기에 충분한 코드를 작성했습니다.

할 수있는 일은 시간 요소를 추가하는 것입니다.

var hrd = time % (60 * 60 * 60);
var hours = Math.floor(hrd / 60);

var mind = hrd % 60;
var minutes = Math.floor(mind / 60);

var secd = mind % 60;
var seconds = Math.ceil(secd);

var moreminutes = minutes + hours * 60

이것은 또한 당신에게 필요한 것을 줄 것입니다.


"시간"을 초로 사용하여 시도했지만 작동하지 않았습니다. 예를 들어, 975 초는 hrd = 975를 의미하며 이는 시간이 16임을 의미합니다.
Spedge

1

나는 이것을 끝내는 더 빠른 방법을 생각하고 있었고 이것이 내가 생각해 낸 것입니다.

var sec = parseInt(time);
var min=0;
while(sec>59){ sec-=60; min++;}

예를 들어 "시간"을 분과 초로 변환하려면 다음과 같이하십시오.

// time = 75,3 sec
var sec = parseInt(time); //sec = 75
var min=0;
while(sec>59){ sec-=60; min++;} //sec = 15; min = 1

1

내 두 센트를 넣어 :

function convertSecondsToMinutesAndSeconds(seconds){
            var minutes;
            var seconds;
            minutes = Math.floor(seconds/60);
            seconds = seconds%60;

            return [minutes, seconds];
        }

그래서 이거 :

var minutesAndSeconds = convertSecondsToMinutesAndSeconds(101);

다음과 같은 출력이 나타납니다.

[1,41];

다음과 같이 인쇄 할 수 있습니다.

console.log('TIME : ' +  minutesSeconds[0] + ' minutes, ' + minutesSeconds[1] + ' seconds');

//TIME : 1 minutes, 41 seconds

1

strftime.js ( strftime github )는 최고의 시간 형식 라이브러리 중 하나입니다. 매우 가볍고 (30KB) 효과적입니다. 이것을 사용하면 한 줄의 코드로 초를 쉽게 시간으로 변환 할 수 있으며 대부분 기본 날짜 클래스에 의존합니다.

새 날짜를 만들 때 각 선택적 인수는 다음과 같은 위치에 있습니다.

new Date(year, month, day, hours, minutes, seconds, milliseconds);

따라서 모든 인수가 0에서 초까지 새 날짜를 초기화하면 다음과 같은 결과가 나타납니다.

var seconds = 150;
var date = new Date(0,0,0,0,0,seconds);
=> Sun Dec 31 1899 00:02:30 GMT-0500 (EST)

생성 된 날짜와 같이 150 초가 2 분 30 초임을 알 수 있습니다. 그런 다음 strftime 형식 ( "MM : SS"의 경우 "% M : % S")을 사용하면 분의 문자열이 출력됩니다.

var mm_ss_str = strftime("%M:%S", date);
=> "02:30"

한 줄에 다음과 같이 보입니다.

var mm_ss_str = strftime('%M:%S', new Date(0,0,0,0,0,seconds));
=> "02:30"

또한이를 통해 초 수에 따라 HH : MM : SS 및 MM : SS를 서로 바꾸어 지원할 수 있습니다. 예를 들면 다음과 같습니다.

# Less than an Hour (seconds < 3600)
var seconds = 2435;
strftime((seconds >= 3600 ? '%H:%M:%S' : '%M:%S'), new Date(0,0,0,0,0,seconds));
=> "40:35"

# More than an Hour (seconds >= 3600)
var seconds = 10050;
strftime((seconds >= 3600 ? '%H:%M:%S' : '%M:%S'), new Date(0,0,0,0,0,seconds));
=> "02:47:30"

물론 시간 문자열을 의미 적으로 사용하려는 경우 strftime하려는 형식을 간단히 전달할 수 있습니다.

var format = 'Honey, you said you\'d be read in %S seconds %M minutes ago!';
strftime(format, new Date(0,0,0,0,0,1210));
=> "Honey, you said you'd be read in 10 seconds 20 minutes ago!"

도움이 되었기를 바랍니다.


1
export function TrainingTime(props) {
    const {train_time } = props;
    const hours = Math.floor(train_time/3600);
    const minutes = Math.floor((train_time-hours * 3600) / 60);
    const seconds = Math.floor((train_time%60));

    return `${hours} hrs  ${minutes} min  ${seconds} sec`;
}

2
스택 오버플로에 오신 것을 환영합니다. @PhilRoggenbuck이 제안한 것처럼 설명이 도움이 될 것입니다. 자세한 내용은 stackoverflow.com/help/how-to-answer
Mikkel

0

다른 해결책을 제안합니다.

function formatTime(nbSeconds, hasHours) {
    var time = [],
        s = 1;
    var calc = nbSeconds;

    if (hasHours) {
        s = 3600;
        calc = calc / s;
        time.push(format(Math.floor(calc)));//hour
    }

    calc = ((calc - (time[time.length-1] || 0)) * s) / 60;
    time.push(format(Math.floor(calc)));//minute

    calc = (calc - (time[time.length-1])) * 60;
    time.push(format(Math.round(calc)));//second


    function format(n) {//it makes "0X"/"00"/"XX"
        return (("" + n) / 10).toFixed(1).replace(".", "");
    }

    //if (!hasHours) time.shift();//you can set only "min: sec"

    return time.join(":");
};
console.log(formatTime(3500));//58:20
console.log(formatTime(305));//05:05
console.log(formatTime(75609, true));//21:00:09
console.log(formatTime(0, true));//00:00:00


0

여러 가지 방법으로 해결되었음을 알고 있습니다. 속도 나 네임 스페이스 오염이 문제가되지 않는 After Effects 스크립트에이 기능이 필요했습니다. 나는 비슷한 것을 필요로하는 누군가를 위해 여기에 떨어 뜨립니다. 나는 또한 몇 가지 테스트를 작성하고 잘 작동했습니다. 코드는 다음과 같습니다.

Number.prototype.asTime = function () {
    var hour = Math.floor(this / 3600),
        min = Math.floor((this - hour * 3600) / 60),
        sec = this - hour * 3600 - min * 60,
        hourStr, minStr, secStr;
    if(hour){
        hourStr = hour.toString(),
        minStr = min < 9 ? "0" + min.toString() : min.toString();
        secStr = sec < 9 ? "0" + sec.toString() : sec.toString();
        return hourStr + ":" + minStr + ":" + secStr + "hrs";
    }
    if(min){
        minStr = min.toString();
        secStr = sec < 9 ? "0" + sec.toString() : sec.toString();
        return  minStr + ":" + secStr + "min";
    }
    return sec.toString() + "sec";
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.