Wil*_*lly 18 java youtube-api time-format
Youtube V3 API使用ISO8601时间格式来描述视频的持续时间.有点像"PT1M13S".现在我想将字符串转换为秒数(例如在这种情况下为73).
是否有任何Java库可以帮助我轻松完成Java 6下的任务?或者我必须自己做正则表达式的任务?
编辑
最后,我接受@Joachim Sauer的回答
示例代码Joda
如下.
PeriodFormatter formatter = ISOPeriodFormat.standard();
Period p = formatter.parsePeriod("PT1H1M13S");
Seconds s = p.toStandardSeconds();
System.out.println(s.getSeconds());
Run Code Online (Sandbox Code Playgroud)
Joa*_*uer 15
对于这种特定情况,ISOPeriodFormat.standard()返回一个PeriodFormatter
可以解析和格式化该格式的东西.
将得到的对象是一个Period
(JavaDoc的).然后获得实际的秒数period.toStandardSeconds().getSeconds()
,但我建议您只将持续时间作为Period
对象处理(为了便于处理和类型安全).
编辑:未来我的一个注释:这个答案现在好几年了.带来的Java 8 java.time.Duration
也可以解析这种格式,不需要外部库.
小智 10
我可能会迟到,这实际上非常简单.虽然可能有更好的方法来做到这一点.持续时间以毫秒为单位.
public long getDuration() {
String time = "PT15H12M46S".substring(2);
long duration = 0L;
Object[][] indexs = new Object[][]{{"H", 3600}, {"M", 60}, {"S", 1}};
for(int i = 0; i < indexs.length; i++) {
int index = time.indexOf((String) indexs[i][0]);
if(index != -1) {
String value = time.substring(0, index);
duration += Integer.parseInt(value) * (int) indexs[i][1] * 1000;
time = time.substring(value.length() + 1);
}
}
return duration;
}
Run Code Online (Sandbox Code Playgroud)
Java 8中的解决方案:
Duration.parse(duration).getSeconds()
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7084 次 |
最近记录: |