비슷한 요구 사항이 있습니다. HH : MM : SS 형식의 시간을 초로 만 변환합니까?
그러나 자바 스크립트에서. 초를 다른 형식으로 변환하는 많은 예를 보았지만 HH : MM : SS를 초로 변환하지 않았습니다. 어떤 도움을 주시면 감사하겠습니다.
비슷한 요구 사항이 있습니다. HH : MM : SS 형식의 시간을 초로 만 변환합니까?
그러나 자바 스크립트에서. 초를 다른 형식으로 변환하는 많은 예를 보았지만 HH : MM : SS를 초로 변환하지 않았습니다. 어떤 도움을 주시면 감사하겠습니다.
DD인은 HH:MM:DD?
답변:
이 시도:
var hms = '02:04:33'; // your input string
var a = hms.split(':'); // split it at the colons
// minutes are worth 60 seconds. Hours are worth 60 minutes.
var seconds = (+a[0]) * 60 * 60 + (+a[1]) * 60 + (+a[2]);
console.log(seconds);
String.prototype.toSeconds = function () { if (!this) return null; var hms = this.split(':'); return (+hms[0]) * 60 * 60 + (+hms[1]) * 60 + (+hms[2] || 0); } 참고 : || 0끝 부분은이 코드의 모든 구현에 적합합니다. HH : MM의 (여전히 유효한) 시간 표시 문제를 방지합니다 (Chrome type = "time"입력은 초 = 0 일 때이 형식으로 출력 됨).
hh:mm없습니다 seconds내가 수정해야 할 무엇,이 경우 ..?
var seconds = (+a[0]) * 60 * 60 + (+a[1]) * 60 + (+a[2]); 에var seconds = (+a[0]) * 60 * 60 + (+a[1]) * 60;
이 함수는 "HH : MM : SS"및 "MM : SS"또는 "SS"를 처리합니다.
function hmsToSecondsOnly(str) {
var p = str.split(':'),
s = 0, m = 1;
while (p.length > 0) {
s += m * parseInt(p.pop(), 10);
m *= 60;
}
return s;
}
이것은 다음을 통해 매우 탄력적으로 수행 할 수 있습니다.
'01:02:03'.split(':').reduce((acc,time) => (60 * acc) + +time);
이는 시간, 분 및 초 내의 각 시간 단위가 작은 단위보다 60의 배수이기 때문입니다. 시간은시 분 및 초 구성 요소로 분할 된 다음 각 단위를 통과 할 때 더 높은 단위의 누적 값에 60을 곱하여 초로 줄입니다.
은 +time숫자로 시간을 주조하는 데 사용됩니다.
기본적으로 다음을 수행합니다. (60 * ((60 * HHHH) + MM)) + SS
초만 지나면 결과는 문자열이되므로 전체 결과를 int로 캐스트 할 수 있습니다.
+('03'.split(':').reduce((acc,time) => (60 * acc) + +time));
HH:MM:SS뿐만 아니라 MM:SS허용 대답하지 않는 동안,.
'03'.split(':').reduce((acc,time) => (60 * acc) + +time, 0);반환하기 때문에 예기치 않은 문자열을 실패 :'03'.split(':').reduce((acc,time) => (60 * acc) + +time);
hh:mm:ss한 줄에서 문자열을 초로 변환 합니다. 또한 허용 h:m:s형식과 mm:ss, m:s등
'08:45:20'.split(':').reverse().reduce((prev, curr, i) => prev + curr*Math.pow(60, i), 0)
hh:mm:ss한 줄에서 문자열을 초로 변환 합니다. 또한 허용 h:m:s형식 mm:ss, m:s등
reverse(). '00 : 01 : 11'.split ( ':'). reduce ((val, entry, i) => val + entry * (3600 / Math.pow (60, i)), 0 ) === 71
mm:ss그것의 경우 제대로 작동하지 않습니다.
Date 객체 의 getTime 함수는 1970/01/01 이후의 밀리 초를 가져 오므로 다음과 같이 할 수 있습니다.
var time = '12:23:00';
var seconds = new Date('1970-01-01T' + time + 'Z').getTime() / 1000;
시험
time="12:12:12";
tt=time.split(":");
sec=tt[0]*3600+tt[1]*60+tt[2]*1;
Paul이 제공 한 솔루션에서 가져옴 https://stackoverflow.com/a/45292588/1191101 왔지만 이전 함수 표기법을 사용하므로 다른 js 엔진 (예 : java Rhino)에서도 사용할 수 있습니다.
function strToSeconds (stime)
{
return +(stime.split(':').reduce(function (acc,time) { return +(60 * acc) + +time }));
}
또는 이것 만 더 읽을 수 있습니다.
function strToSeconds (stime)
{
var tt = stime.split(':').reverse ();
return ((tt.length >= 3) ? (+tt[2]): 0)*60*60 +
((tt.length >= 2) ? (+tt[1]): 0)*60 +
((tt.length >= 1) ? (+tt[0]): 0);
}
function parsehhmmsst(arg) {
var result = 0, arr = arg.split(':')
if (arr[0] < 12) {
result = arr[0] * 3600 // hours
}
result += arr[1] * 60 // minutes
result += parseInt(arr[2]) // seconds
if (arg.indexOf('P') > -1) { // 8:00 PM > 8:00 AM
result += 43200
}
return result
}
$('body').append(parsehhmmsst('12:00:00 AM') + '<br>')
$('body').append(parsehhmmsst('1:00:00 AM') + '<br>')
$('body').append(parsehhmmsst('2:00:00 AM') + '<br>')
$('body').append(parsehhmmsst('3:00:00 AM') + '<br>')
$('body').append(parsehhmmsst('4:00:00 AM') + '<br>')
$('body').append(parsehhmmsst('5:00:00 AM') + '<br>')
$('body').append(parsehhmmsst('6:00:00 AM') + '<br>')
$('body').append(parsehhmmsst('7:00:00 AM') + '<br>')
$('body').append(parsehhmmsst('8:00:00 AM') + '<br>')
$('body').append(parsehhmmsst('9:00:00 AM') + '<br>')
$('body').append(parsehhmmsst('10:00:00 AM') + '<br>')
$('body').append(parsehhmmsst('11:00:00 AM') + '<br>')
$('body').append(parsehhmmsst('12:00:00 PM') + '<br>')
$('body').append(parsehhmmsst('1:00:00 PM') + '<br>')
$('body').append(parsehhmmsst('2:00:00 PM') + '<br>')
$('body').append(parsehhmmsst('3:00:00 PM') + '<br>')
$('body').append(parsehhmmsst('4:00:00 PM') + '<br>')
$('body').append(parsehhmmsst('5:00:00 PM') + '<br>')
$('body').append(parsehhmmsst('6:00:00 PM') + '<br>')
$('body').append(parsehhmmsst('7:00:00 PM') + '<br>')
$('body').append(parsehhmmsst('8:00:00 PM') + '<br>')
$('body').append(parsehhmmsst('9:00:00 PM') + '<br>')
$('body').append(parsehhmmsst('10:00:00 PM') + '<br>')
$('body').append(parsehhmmsst('11:00:00 PM') + '<br>')
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
이것이 가장 명확하고 이해하기 쉬운 솔루션입니다.
function convertDurationtoSeconds(duration){
const [hours, minutes, seconds] = duration.split(':');
return Number(hours) * 60 * 60 + Number(minutes) * 60 + Number(seconds);
};
const input = '01:30:45';
const output = convertDurationtoSeconds(input);
console.log(`${input} is ${output} in seconds`);