programing tip

moment.js에서 초를 HH : mm : ss로 변환하는 방법

itbloger 2020. 11. 4. 07:45
반응형

moment.js에서 초를 HH : mm : ss로 변환하는 방법


초를 HH:mm:ss어떻게 변환 할 수 있습니까?

현재 아래 기능을 사용하고 있습니다

render: function (data){
     return new Date(data*1000).toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/, "$1");;
}

이것은 크롬에서 작동하지만 파이어 폭스에서 12 초 동안 01:00:12크로스 브라우저 호환성을 위해 moment.js를 사용하고 싶습니다.

나는 이것을 시도했지만 작동하지 않습니다

render: function (data){
         return moment(data).format('HH:mm:ss');
}

내가 도대체 ​​뭘 잘못하고있는 겁니까?

편집하다

나는 다음과 같은 moment.js 없이 해결책 찾았습니다.

return (new Date(data * 1000)).toUTCString().match(/(\d\d:\d\d:\d\d)/)[0];

moment.js에서 어떻게 할 수 있는지 여전히 궁금합니다.


에서 이 게시물에 나는 도약 문제를 방지하려면이 옵션을 시도 할 것

moment("2015-01-01").startOf('day')
    .seconds(s)
    .format('H:mm:ss');

jsPerf를 실행하지 않았지만 새 날짜 개체를 백만 번 만드는 것보다 빠르다고 생각합니다.

function pad(num) {
    return ("0"+num).slice(-2);
}
function hhmmss(secs) {
  var minutes = Math.floor(secs / 60);
  secs = secs%60;
  var hours = Math.floor(minutes/60)
  minutes = minutes%60;
  return `${pad(hours)}:${pad(minutes)}:${pad(secs)}`;
  // return pad(hours)+":"+pad(minutes)+":"+pad(secs); for old browsers
}

function pad(num) {
    return ("0"+num).slice(-2);
}
function hhmmss(secs) {
  var minutes = Math.floor(secs / 60);
  secs = secs%60;
  var hours = Math.floor(minutes/60)
  minutes = minutes%60;
  return `${pad(hours)}:${pad(minutes)}:${pad(secs)}`;
  // return pad(hours)+":"+pad(minutes)+":"+pad(secs); for old browsers
}

for (var i=60;i<=60*60*5;i++) {
 document.write(hhmmss(i)+'<br/>');
}


/* 
function show(s) {
  var d = new Date();
  var d1 = new Date(d.getTime()+s*1000);
  var  hms = hhmmss(s);
  return (s+"s = "+ hms + " - "+ Math.floor((d1-d)/1000)+"\n"+d.toString().split("GMT")[0]+"\n"+d1.toString().split("GMT")[0]);
}    
*/


이것은 다른 게시물에서 참조한 mplungjan 답변과 유사하지만 더 간결합니다.

const secs = 456;

const formatted = moment.utc(secs*1000).format('HH:mm:ss');

document.write(formatted);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>

It suffers from the same caveats, e.g. if seconds exceed one day (86400), you'll not get what you expect.


You can use moment-duration-format plugin:

var seconds = 3820;
var duration = moment.duration(seconds, 'seconds');
var formatted = duration.format("hh:mm:ss");
console.log(formatted); // 01:03:40
<!-- Moment.js library -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>

<!-- moment-duration-format plugin -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-duration-format/1.3.0/moment-duration-format.min.js"></script>

See also this Fiddle


var seconds = 2000 ; // or "2000"
seconds = parseInt(seconds) //because moment js dont know to handle number in string format
var format =  Math.floor(moment.duration(seconds,'seconds').asHours()) + ':' + moment.duration(seconds,'seconds').minutes() + ':' + moment.duration(seconds,'seconds').seconds();

참고URL : https://stackoverflow.com/questions/31337370/how-to-convert-seconds-to-hhmmss-in-moment-js

반응형