JavaScript를 사용하여 PT # M # S 형식으로 날짜 시간을 조작하려면 어떻게해야합니까? 예를 들어YouTube API 기간 (ISO 8601 기간, 형식 PT # M # S)을 초 단위로 변환하는 방법
: PT5M33S
나는 hh:mm:ss
로 출력하고 싶습니다.
JavaScript를 사용하여 PT # M # S 형식으로 날짜 시간을 조작하려면 어떻게해야합니까? 예를 들어YouTube API 기간 (ISO 8601 기간, 형식 PT # M # S)을 초 단위로 변환하는 방법
: PT5M33S
나는 hh:mm:ss
로 출력하고 싶습니다.
총 코드 수는 다음과 같습니다. 규칙에 따라 로직을 원한다면 언제든지 다음과 같이하면 안된다는 느낌이 들지만, 어쨌든 여기에 있습니다. Google은 쉬운 일이 아니며 getduration 플레이어 API에서 총 초를 제공하고 전적으로 제공합니다 gdata API의 다른 형식. 여기
var reptms = /^PT(?:(\d+)H)?(?:(\d+)M)?(?:(\d+)S)?$/;
var hours = 0, minutes = 0, seconds = 0, totalseconds;
if (reptms.test(input)) {
var matches = reptms.exec(input);
if (matches[1]) hours = Number(matches[1]);
if (matches[2]) minutes = Number(matches[2]);
if (matches[3]) seconds = Number(matches[3]);
totalseconds = hours * 3600 + minutes * 60 + seconds;
}
감사합니다. 약간의 조작으로 필자는 필자가 필요로하는대로 작동하게 만들었습니다. – Nicholas
어때'기간 : "PT26M"' –
는 간단한 방법으로 유튜브 API (V3)를 통해 YouTube 동영상 데이터를 얻을 초 비디오 지속 시간 (ISO 8601)을 변환 할 수있는 방법이다. 당신의 동영상 ID하고 공개 구글 키에 URL에서 {비디오 ID} 및 {키} 속성을 변경하는 것을 잊지 마십시오. Google 개발자 콘솔에 액세스하는 공개 키를 만들 수 있습니다.
$.ajax({
url: "https://www.googleapis.com/youtube/v3/videos?id={ YOUR VIDEO ID }&part=contentDetails&key={ YOUR KEY }",
dataType: "jsonp",
success: function (data) { youtubeCallback (data); }
});
function youtubeCallback(data) {
var duration = data.items[0].contentDetails.duration;
alert (convertISO8601ToSeconds (duration));
}
function convertISO8601ToSeconds(input) {
var reptms = /^PT(?:(\d+)H)?(?:(\d+)M)?(?:(\d+)S)?$/;
var hours = 0, minutes = 0, seconds = 0, totalseconds;
if (reptms.test(input)) {
var matches = reptms.exec(input);
if (matches[1]) hours = Number(matches[1]);
if (matches[2]) minutes = Number(matches[2]);
if (matches[3]) seconds = Number(matches[3]);
totalseconds = hours * 3600 + minutes * 60 + seconds;
}
return (totalseconds);
}
어때'기간 : "PT26M"' –
이러한 대답은 기술적으로 정확합니다. 시간과 기간이 많은 경우에는 momentjs을 확인해야합니다. 또한 일반 momentjs 시간
이 2 개 개의 모듈을 출력 5시 33분이
moment.duration('PT5M33S').format('hh:mm:ss')
을 얼마나 쉽게의 예처럼 단순한 형식 기간을하게 moment-duration-formats을 확인하십시오. 그리고 다른 많은 용도가 있습니다.
youtube가 표준이기 때문에 ISO8601 형식을 사용하는 이유가 있지만이를 염두에 두시기 바랍니다.
피들 : https://jsfiddle.net/Daugilas/kbeb0p99/1/ –
@Daugilas Kakaras 매우 좋습니다! 하지만 기능을 업데이트해야합니다. P1D와 같은 형식 (일일) 기능이 작동하지 않습니다. –
@ Serhiog.Lazin, true - updated : https://jsfiddle.net/kbeb0p99/4/ * 꽤 오래 된 후 :) –