문제

초를 어떻게 초로 변환할 수 있나요? HH-MM-SS JavaScript를 사용하는 문자열?

도움이 되었습니까?

해결책

모르겠어요 datejs? 그것은 필수적입니다.

DateJS를 사용하여 다음과 같은 것을 작성하십시오.

(new Date).clearTime()
          .addSeconds(15457)
          .toString('H:mm:ss');

--업데이트

요즘 날짜 .js는 구식이며 유지 관리되지 않으므로 사용하십시오. "Moment.js"TJ Crowder가 지적한 것처럼 훨씬 낫습니다.

다른 팁

다음과 같은 JavaScript 날짜 방법을 사용하여 외부 JavaScript 라이브러리 없이이 작업을 수행 할 수 있습니다.

var date = new Date(null);
date.setSeconds(SECONDS); // specify value for SECONDS here
var result = date.toISOString().substr(11, 8);

또는 그에 따라 @솔직한의 의견; 하나의 라이너 :

new Date(SECONDS * 1000).toISOString().substr(11, 8);

표준 날짜 개체의 내장 기능이 수학을 직접하는 것보다 더 편리한 방식으로이를 수행 할 것이라고 생각하지 않습니다.

hours = Math.floor(totalSeconds / 3600);
totalSeconds %= 3600;
minutes = Math.floor(totalSeconds / 60);
seconds = totalSeconds % 60;

예시:

let totalSeconds = 28565;
let hours = Math.floor(totalSeconds / 3600);
totalSeconds %= 3600;
let minutes = Math.floor(totalSeconds / 60);
let seconds = totalSeconds % 60;

console.log("hours: " + hours);
console.log("minutes: " + minutes);
console.log("seconds: " + seconds);

// If you want strings with leading zeroes:
minutes = String(minutes).padStart(2, "0");
hours = String(hours).padStart(2, "0");
seconds = String(seconds).padStart(2, "0");
console.log(hours + ":" + minutes + ":" + seconds);

나는 이것이 좀 늙었다는 것을 알고 있지만 ...

ES2015 :

var toHHMMSS = (secs) => {
    var sec_num = parseInt(secs, 10)
    var hours   = Math.floor(sec_num / 3600)
    var minutes = Math.floor(sec_num / 60) % 60
    var seconds = sec_num % 60

    return [hours,minutes,seconds]
        .map(v => v < 10 ? "0" + v : v)
        .filter((v,i) => v !== "00" || i > 0)
        .join(":")
}

출력 :

toHHMMSS(129600) // 36:00:00
toHHMMSS(13545) // 03:45:45
toHHMMSS(180) // 03:00
toHHMMSS(18) // 00:18

Cleiton이 지적했듯이 그의 대답, Moment.js 이것에 사용할 수 있습니다 :

moment().startOf('day')
        .seconds(15457)
        .format('H:mm:ss');
function formatSeconds(seconds)
{
    var date = new Date(1970,0,1);
    date.setSeconds(seconds);
    return date.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/, "$1");
}

이것은 트릭을 수행합니다.

function secondstotime(secs)
{
    var t = new Date(1970,0,1);
    t.setSeconds(secs);
    var s = t.toTimeString().substr(0,8);
    if(secs > 86399)
        s = Math.floor((t - Date.parse("1/1/70")) / 3600000) + s.substr(2);
    return s;
}

(출처 여기)

     var  timeInSec = "661"; //even it can be string

            String.prototype.toHHMMSS = function () { 
               /* extend the String by using prototypical inheritance */
                var seconds = parseInt(this, 10); // don't forget the second param
                var hours   = Math.floor(seconds / 3600);
                var minutes = Math.floor((seconds - (hours * 3600)) / 60);
                seconds = seconds - (hours * 3600) - (minutes * 60);

                if (hours   < 10) {hours   = "0"+hours;}
                if (minutes < 10) {minutes = "0"+minutes;}
                if (seconds < 10) {seconds = "0"+seconds;}
                var time    = hours+':'+minutes+':'+seconds;
                return time;
            }

            alert("5678".toHHMMSS());   // "01:34:38"
            console.log(timeInSec.toHHMMSS());   //"00:11:01"

우리는이 기능을 더 짧고 파삭 파삭하게 만들 수 있지만 가독성을 줄일 수 있으므로 가능한 한 간단하고 가능한 한 안정적으로 작성합니다.

또는이 작업을 확인할 수 있습니다 여기:

이 시도:

function toTimeString(seconds) {
  return (new Date(seconds * 1000)).toUTCString().match(/(\d\d:\d\d:\d\d)/)[0];
}

다음은 숫자 클래스로의 확장입니다. Tohhmmss ()는 초를 HH : MM : SS String으로 변환합니다.

Number.prototype.toHHMMSS = function() {
  var hours = Math.floor(this / 3600) < 10 ? ("00" + Math.floor(this / 3600)).slice(-2) : Math.floor(this / 3600);
  var minutes = ("00" + Math.floor((this % 3600) / 60)).slice(-2);
  var seconds = ("00" + (this % 3600) % 60).slice(-2);
  return hours + ":" + minutes + ":" + seconds;
}

// Usage: [number variable].toHHMMSS();

// Here is a simple test
var totalseconds = 1234;
document.getElementById("timespan").innerHTML = totalseconds.toHHMMSS();
// HTML of the test
<div id="timespan"></div>

Noobies를위한 버전을 따르기 쉬운 :

 var totalNumberOfSeconds = YOURNUMBEROFSECONDS;
 var hours = parseInt( totalNumberOfSeconds / 3600 );
 var minutes = parseInt( (totalNumberOfSeconds - (hours * 3600)) / 60 );
 var seconds = Math.floor((totalNumberOfSeconds - ((hours * 3600) + (minutes * 60))));
 var result = (hours < 10 ? "0" + hours : hours) + ":" + (minutes < 10 ? "0" + minutes : minutes) + ":" + (seconds  < 10 ? "0" + seconds : seconds);
 console.log(result);

이 기능은 다음을 수행해야합니다.

var convertTime = function (input, separator) {
    var pad = function(input) {return input < 10 ? "0" + input : input;};
    return [
        pad(Math.floor(input / 3600)),
        pad(Math.floor(input % 3600 / 60)),
        pad(Math.floor(input % 60)),
    ].join(typeof separator !== 'undefined' ?  separator : ':' );
}

분리기를 통과시키지 않으면 사용합니다 : (기본) 분리기로 :

time = convertTime(13551.9941351); // --> OUTPUT = 03:45:51

사용하려면 - 분리기로서 두 번째 매개 변수로 전달하십시오.

time = convertTime(1126.5135155, '-'); // --> OUTPUT = 00-18-46

또한보십시오 이 바이올린.

위의 멋진 대답에 대해 약간의 설명을하고 싶었습니다.

var totalSec = new Date().getTime() / 1000;
var hours = parseInt( totalSec / 3600 ) % 24;
var minutes = parseInt( totalSec / 60 ) % 60;
var seconds = totalSec % 60;

var result = (hours < 10 ? "0" + hours : hours) + "-" + (minutes < 10 ? "0" + minutes : minutes) + "-" + (seconds  < 10 ? "0" + seconds : seconds);

두 번째 줄에서는 1 시간 만에 3600 초가 있기 때문에 총 시간 수를 3600으로 나누기 위해 총 시간 수를 얻습니다. 우리는 parseint를 사용하여 소수점을 벗겨냅니다. Totalsec이 12600 (3 시간 반) 인 경우 Parseint (Totalsec / 3600)는 3 시간이되므로 3 번 반환됩니다. 이 경우 왜 % 24가 필요한가? 우리가 24 시간을 초과하면 25 시간 (90000 초)이 있다고 가정 해 봅시다. 그러면 모듈로는 25 시간을 반환하는 대신 다시 1으로 다시 데려갑니다. 24 시간 이내에 24 시간 이내에 결과를 제한하고 있습니다. 하루에.

다음과 같은 것을 볼 때 :

25 % 24

다음과 같이 생각하십시오.

25 mod 24 or what is the remainder when we divide 25 by 24

이 오래된 스레드에서 삐걱 거리는 소리 - OP는 HH : MM : SS 및 많은 솔루션이 24 시간 이상 필요하다는 것을 깨달을 때까지 언급했습니다. 그리고 아마도 당신은 한 줄 이상의 코드를 원하지 않을 것입니다. 여기에 간다 :

d=(s)=>{f=Math.floor;g=(n)=>('00'+n).slice(-2);return f(s/3600)+':'+g(f(s/60)%60)+':'+g(s%60)}

H+: MM : SS를 반환합니다. 사용하려면 간단히 사용하십시오.

d(91260);     // returns "25:21:00"
d(960);       // returns "0:16:00"

... 멋진 1 라이너 접근 방식을 위해 가능한 최소한의 코드를 사용하도록 노력했습니다.

아래는 1 초를 HH-MM-SS 형식으로 변환하는 주어진 코드입니다.

var measuredTime = new Date(null);
measuredTime.setSeconds(4995); // specify value of SECONDS
var MHSTime = measuredTime.toISOString().substr(11, 8);

대체 방법을 얻으십시오 JavaScript에서 초를 HH-MM-SS 형식으로 변환합니다

var time1 = date1.getTime();
var time2 = date2.getTime();
var totalMilisec = time2 - time1;

alert(DateFormat('hh:mm:ss',new Date(totalMilisec)))

 /* ----------------------------------------------------------
 *  Field        | Full Form          | Short Form
 *  -------------|--------------------|-----------------------
 *  Year         | yyyy (4 digits)    | yy (2 digits)
 *  Month        | MMM (abbr.)        | MM (2 digits)
                 | NNN (name)         |
 *  Day of Month | dd (2 digits)      | 
 *  Day of Week  | EE (name)          | E (abbr)
 *  Hour (1-12)  | hh (2 digits)      | 
 *  Minute       | mm (2 digits)      | 
 *  Second       | ss (2 digits)      | 
 *  ----------------------------------------------------------
 */
function DateFormat(formatString,date){
    if (typeof date=='undefined'){
    var DateToFormat=new Date();
    }
    else{
        var DateToFormat=date;
    }
    var DAY         = DateToFormat.getDate();
    var DAYidx      = DateToFormat.getDay();
    var MONTH       = DateToFormat.getMonth()+1;
    var MONTHidx    = DateToFormat.getMonth();
    var YEAR        = DateToFormat.getYear();
    var FULL_YEAR   = DateToFormat.getFullYear();
    var HOUR        = DateToFormat.getHours();
    var MINUTES     = DateToFormat.getMinutes();
    var SECONDS     = DateToFormat.getSeconds();

    var arrMonths = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
    var arrDay=new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
    var strMONTH;
    var strDAY;
    var strHOUR;
    var strMINUTES;
    var strSECONDS;
    var Separator;

    if(parseInt(MONTH)< 10 && MONTH.toString().length < 2)
        strMONTH = "0" + MONTH;
    else
        strMONTH=MONTH;
    if(parseInt(DAY)< 10 && DAY.toString().length < 2)
        strDAY = "0" + DAY;
    else
        strDAY=DAY;
    if(parseInt(HOUR)< 10 && HOUR.toString().length < 2)
        strHOUR = "0" + HOUR;
    else
        strHOUR=HOUR;
    if(parseInt(MINUTES)< 10 && MINUTES.toString().length < 2)
        strMINUTES = "0" + MINUTES;
    else
        strMINUTES=MINUTES;
    if(parseInt(SECONDS)< 10 && SECONDS.toString().length < 2)
        strSECONDS = "0" + SECONDS;
    else
        strSECONDS=SECONDS;

    switch (formatString){
        case "hh:mm:ss":
            return strHOUR + ':' + strMINUTES + ':' + strSECONDS;
        break;
        //More cases to meet your requirements.
    }
}

날짜 개체에 몇 초를 추가 해 보셨습니까?

var dt = new Date();
dt.addSeconds(1234);

샘플:https://jsfiddle.net/j5g2p0dc/5/

업데이트 : 샘플 링크가 누락되어 새 링크를 만들었습니다.

다음은 Powtac의 답변을 기반으로 초를 HH-MM-SS 형식으로 변환하는 기능입니다. 여기

jsfiddle

/** 
 * Convert seconds to hh-mm-ss format.
 * @param {number} totalSeconds - the total seconds to convert to hh- mm-ss
**/
var SecondsTohhmmss = function(totalSeconds) {
  var hours   = Math.floor(totalSeconds / 3600);
  var minutes = Math.floor((totalSeconds - (hours * 3600)) / 60);
  var seconds = totalSeconds - (hours * 3600) - (minutes * 60);

  // round seconds
  seconds = Math.round(seconds * 100) / 100

  var result = (hours < 10 ? "0" + hours : hours);
      result += "-" + (minutes < 10 ? "0" + minutes : minutes);
      result += "-" + (seconds  < 10 ? "0" + seconds : seconds);
  return result;
}

예제 사용

var seconds = SecondsTohhmmss(70);
console.log(seconds);
// logs 00-01-10

모든 답을보고 대부분의 답변을보고 만족하지 못한 후, 이것이 제가 생각해 낸 것입니다. 나는 대화에 매우 늦었다는 것을 알고 있지만 여기서 어쨌든 여기에 있습니다.

function secsToTime(secs){
  var time = new Date(); 
  // create Date object and set to today's date and time
  time.setHours(parseInt(secs/3600) % 24);
  time.setMinutes(parseInt(secs/60) % 60);
  time.setSeconds(parseInt(secs%60));
  time = time.toTimeString().split(" ")[0];
  // time.toString() = "HH:mm:ss GMT-0800 (PST)"
  // time.toString().split(" ") = ["HH:mm:ss", "GMT-0800", "(PST)"]
  // time.toTimeString().split(" ")[0]; = "HH:mm:ss"
  return time;
}

새 날짜 객체를 생성하고 매개 변수로 시간을 변경하고 날짜 개체를 시간 문자열로 변환 한 다음 문자열을 분할하고 필요한 부품 만 반환하여 추가 물건을 제거했습니다.

"HH : MM : SS"형식으로 결과를 얻기 위해 Regex, Logic 및 Math Acrobatics가 필요하지 않기 때문에이 접근법을 공유 할 것이라고 생각했습니다. 대신 내장 방법에 의존합니다.

여기에서 문서를 살펴 보겠습니다. https://developer.mozilla.org/en-us/docs/web/javascript/reference/global_objects/date

이 문제를 해결할 수있는 많은 옵션이 있으며, 좋은 옵션이 제안되어 있지만 여기에 최적의 코드를 추가하고 싶습니다.

function formatSeconds(sec) {
     return [(sec / 3600), ((sec % 3600) / 60), ((sec % 3600) % 60)]
            .map(v => v < 10 ? "0" + parseInt(v) : parseInt(v))
            .filter((i, j) => i !== "00" || j > 0)
            .join(":");
}

숫자가 10 명 미만으로 포맷 된 0을 원하지 않으면 사용할 수 있습니다.

function formatSeconds(sec) {
  return parseInt(sec / 3600) + ':' + parseInt((sec % 3600) / 60) + ':' + parseInt((sec % 3600) % 60);

}

샘플 코드 http://fiddly.org/1c476/1

한 줄로 TJ Crowder의 솔루션 사용 :

secToHHMMSS = seconds => `${Math.floor(seconds / 3600)}:${Math.floor((seconds % 3600) / 60)}:${Math.floor((seconds % 3600) % 60)}`

한 줄로, 날을 계산하는 또 다른 솔루션 :

secToDHHMMSS = seconds => `${parseInt(seconds / 86400)}d ${new Date(seconds * 1000).toISOString().substr(11, 8)}`

원천 : https://gist.github.com/martinbean/2bf88c446be804814cf02b2641ba276

var sec_to_hms = function(sec){
var min, hours;
     sec = sec - (min = Math.floor(sec/60))*60;
     min = min - (hours = Math.floor(min/60))*60;
     return (hours?hours+':':'') + ((min+'').padStart(2, '0')) + ':'+ ((sec+'').padStart(2, '0'));
}
alert(sec_to_hms(2442542));

아래 코드를 사용할 수도 있습니다.

int ss = nDur%60;
nDur   = nDur/60;
int mm = nDur%60;
int hh = nDur/60;

new Date().toString().split(" ")[4];

결과 15:08:03

AngularJS를 사용하는 사람이라면 간단한 솔루션은 값을 날짜 API, 요청 된 형식에 따라 밀리 초를 문자열로 변환합니다. 예시:

<div>Offer ends in {{ timeRemaining | date: 'HH:mm:ss' }}</div>

이것은 밀리 초가 예상되므로 초에서 변환하는 경우 (원래 질문이 공식화되었으므로) 타이머 메이닝에 1000을 곱할 수 있습니다.

나는 몇 초가 하루 이상인 곳을 언급 한 사건을 다루었습니다. 다음은 @Harish ANCU의 최고급 답변의 적응 된 버전이 더 오랜 기간을 차지합니다.

function secondsToTime(seconds) {
  const arr = new Date(seconds * 1000).toISOString().substr(11, 8).split(':');

  const days = Math.floor(seconds / 86400);
  arr[0] = parseInt(arr[0], 10) + days * 24;

  return arr.join(':');
}

예시:

secondsToTime(101596) // outputs '28:13:16' as opposed to '04:13:16'
String.prototype.toHHMMSS = function () {
    var sec_num = parseInt(this, 10); // don't forget the second param
    var hours   = Math.floor(sec_num / 3600);
    var minutes = Math.floor((sec_num - (hours * 3600)) / 60);
    var seconds = sec_num - (hours * 3600) - (minutes * 60);

    if (hours   < 10) {hours   = "0"+hours;}
    if (minutes < 10) {minutes = "0"+minutes;}
    if (seconds < 10) {seconds = "0"+seconds;}
    return hours+':'+minutes+':'+seconds;
}

사용 예제

alert("186".toHHMMSS());

여기에 있는 답변 중 어느 것도 내가 처리할 수 있기를 원하는 내 요구 사항을 충족하지 않습니다.

  1. 많은 초(일)
  2. 음수

OP에서 요구하는 것은 아니지만 특히 노력이 거의 들지 않는 경우에는 특별한 경우를 다루는 것이 좋습니다.

OP가 그가 말할 때 NUMBER초를 의미한다는 것은 매우 분명합니다. .왜 당신의 기능을 고정시키겠습니까? String?

function secondsToTimeSpan(seconds) {
    const value = Math.abs(seconds);
    const days = Math.floor(value / 1440);
    const hours = Math.floor((value - (days * 1440)) / 3600);
    const min = Math.floor((value - (days * 1440) - (hours * 3600)) / 60);
    const sec = value - (days * 1440) - (hours * 3600) - (min * 60);
    return `${seconds < 0 ? '-':''}${days > 0 ? days + '.':''}${hours < 10 ? '0' + hours:hours}:${min < 10 ? '0' + min:min}:${sec < 10 ? '0' + sec:sec}`
}
secondsToTimeSpan(0);       // => 00:00:00
secondsToTimeSpan(1);       // => 00:00:01
secondsToTimeSpan(1440);    // => 1.00:00:00
secondsToTimeSpan(-1440);   // => -1.00:00:00
secondsToTimeSpan(-1);      // => -00:00:01

간단한 Timespan 객체를 만들기 전에이 코드를 사용했습니다.

function TimeSpan(time) {
this.hours = 0;
this.minutes = 0;
this.seconds = 0;

while(time >= 3600)
{
    this.hours++;
    time -= 3600;
}

while(time >= 60)
{
    this.minutes++;
    time -= 60;
}

this.seconds = time;
}

var timespan = new Timespan(3662);

아마도 다음과 같은 것일 수 있습니다.

var Convert = function (time) {
    const HOUR = 60 * 60;
    const MINUTE = 60;

    var minutesInSeconds = time % HOUR;
    var hours = Math.floor(time / HOUR);
    var minutes = Math.floor(minutesInSeconds / MINUTE)
    var seconds = minutesInSeconds % MINUTE;

    return hours.padStart(2, 0) + ':' + minutes.padStart(2, 0) + ':' + seconds.padStart(2, 0);
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top