我有一個持續時間字符串「PT1M33S」。 我想用下面的格式得到結果 - > 01:33 任何人都可以請告訴我如何使用js或jquery?將ISO 8601時間格式轉換爲正常持續時間
回答
這似乎不是時間格式,只是視頻的持續時間。
------ 33 Seconds
''
PT1M33S
'------- 1 Minute
^h - 小時
米 - 分鐘
S-秒
那麼試試這個
var timeD = "PT1M33S";
var formattedTime = timeD.replace("PT","").replace("H",":").replace("M",":").replace("S","")
alert(formattedTime);
Fiddle例如,可以用一個簡單的正則表達式一個做得太。
希望你能理解。
謝謝... !!它是一個非常簡單的...!喜歡它 – user2091061
非常聰明的解決方案 – mhlavacka
,但不會用單位數分鐘或秒 - 「PT2H1M5S」-2:1:5 – mhlavacka
可以匹配數字和墊他們格式 -
var string= "PT1M33S",
array=string.match(/(\d+)(?=[MHS])/ig)||[];
var formatted=array.map(function(item){
if(item.length<2) return '0'+item;
return item;
}).join(':');
formatted
/*返回值:(字符串) 01:33 */
謝謝...!不錯的一個 – user2091061
我喜歡這個答案,因爲它很簡單,但是,如果分鐘或秒數小於10,則會產生奇怪的結果,例如10:04返回爲10:4。
所以我加了一些簡單的功能,以進一步分析和重新組裝時間字符串:
function formatTimeSeg(segment) {
newSegment = segment;
segLength = segment.length;
if(segLength==1){
newSegment = '0'+segment;
}
return newSegment;
}
extractedTime = duration.replace("PT","").replace("H",":").replace("M",":").replace("S","")
extractedTime = extractedTime.split(':');
timeLength = extractedTime.length;
switch(timeLength) {
case 3:
hours=extractedTime[0];minutes=extractedTime[1];seconds=extractedTime[2];
minutes = formatTimeSeg(minutes);
seconds = formatTimeSeg(seconds);
formattedTime = hours+':'+minutes+':'+seconds;
break;
case 2:
minutes=extractedTime[0];seconds=extractedTime[1];
minutes = formatTimeSeg(minutes);
seconds = formatTimeSeg(seconds);
formattedTime = minutes+':'+seconds;
break;
case 1:
seconds=extractedTime[0];
seconds = formatTimeSeg(seconds);
formattedTime = '0:'+seconds;
break
}
我個人使用:
function parseDuration(e){var n=e.replace(/D|H|M/g,":").replace(/P|T|S/g,"").split(":");if(1==n.length)2!=n[0].length&&(n[0]="0"+n[0]),n[0]="0:"+n[0];else for(var r=1,l=n.length-1;l>=r;r++)2!=n[r].length&&(n[r]="0"+n[r]);return n.join(":")}
相同的代碼格式:
function parseDuration(e){
var n = e.replace(/D|H|M/g,":").replace(/P|T|S/g,"").split(":");
if(1 == n.length)
2!=n[0].length && (n[0]="0"+n[0]),n[0]="0:"+n[0];
else
for(var r=1, l=n.length-1; l>=r;r++)
2!=n[r].length && (n[r]="0"+n[r]);
return n.join(":")
}
工程出色,非常好的一段代碼,輸出格式準備好的時間t o使用。 – brasofilo
- 1. 如何將YouTube API持續時間(格式爲PT#M#S的ISO 8601持續時間)轉換爲秒
- 2. 轉換YouTube API持續時間(格式爲ISO 8601持續時間),以H:M:S,時制,沒有 「T」 在JavaScript
- 3. 將日期時間轉換爲ISO 8601
- 4. PHP:如何串持續時間轉換爲ISO 8601持續時間格式? (即「30分鐘」到「PT30M」)
- 5. 是否可以將正常日期轉換爲ISO 8601時間格式?
- 6. 將ISO 8601格式的時間段轉換爲ticks /毫秒
- 7. 轉換普通語言持續時間喬達期或ISO 8601
- 8. 用於ISO 8601格式化持續時間的庫
- 9. 如何日期時間轉換爲ISO 8601格式
- 10. PHP轉換爲YouTube時間格式(ISO 8601)
- 11. 如何將持續時間從ISO格式PT1h30M轉換爲基於php分鐘數的int持續時間?
- 12. 轉換Unix時間戳到ISO 8601
- 13. 在ISO當前時間8601格式
- 14. Android時間ISO 8601
- 15. 與ISO時間(8601)
- 16. 如何將ISO 8601持續時間轉換爲Lua中格式化的字符串?
- 17. 從ISO 8601時間戳顯示12小時時間格式
- 18. 將總秒數轉換爲ISO持續時間字符串。 Javascript
- 19. 將ISO 8601時間戳字符串轉換爲java.time.OffsetDateTime
- 20. 如何將iso-8601時間戳轉換爲MySQL DATETIME
- 21. SSIS:將ISO 8601字符串轉換爲日期時間列
- 22. 如何使用Shell將ISO 8601時間戳轉換爲Unix時間戳?
- 23. 轉換一個正常的日期爲ISO-8601格式
- 24. 如何在JavaScript中獲得ISO 8601時間格式的時間?
- 25. 將NSTimeInterval持續時間轉換爲NSString
- 26. 將秒轉換爲持續時間
- 27. 將時間間隔持續時間轉換爲小數點
- 28. Ruby on Rails - YouTube API - 如何格式化持續時間ISO 8601(PT45S)
- 29. 如何時間結構轉換爲ISO YYYY-MM-DD的8601格式在Matlab?
- 30. 如何在ISO中將ISO 8601日期轉換爲UNIX時間戳?
「PT1M:33S」看起來不像有效的ISO 8601日期。最接近的格式是「YYYY-MM-DDTHH:mm:ss」。 – Pavlo
其實我是在提取youtube視頻,我將視頻的持續時間設置爲「PT1M33S」,現在我需要將它轉換爲正常的時間格式 – user2091061
你可以用一個簡單的正則表達式來解析它,或者你可以看看'durationMs '(持續時間以毫秒爲單位),youtube API也提供,更適合您的需求... – CBroe