我有以下数据:
"startAt": "PT0S", “endAt”:“PT21M12.667S”
startAt 定义视频的开头和 endAt 视频的结尾。如何计算这些点之间的时间?我猜它的 ISO 8601 并且我正在使用 Java,但是我尝试过的库(Joda)不能与 endAt 参数一起使用。
这些是 ISO-8601周期值(不是时间点) - Joda Time 可以很好地处理它们:
import org.joda.time.*;
import org.joda.time.format.*;
public class Test {
public static void main(String[] args) {
String startText = "PT0S";
String endText = "PT21M12.667S";
PeriodFormatter format = ISOPeriodFormat.standard();
Period start = format.parsePeriod(startText);
Period end = format.parsePeriod(endText);
Duration duration = end.minus(start).toStandardDuration();
System.out.println(duration); // PT1272.667S
System.out.println(duration.getMillis()); // 1272667
}
}
java.time.Duration
以ISO-8601 标准为蓝本,作为JSR-310 实施的一部分引入。
演示:
import java.time.Duration;
public class Main {
public static void main(String[] args) {
String startAt = "PT0S";
String endAt = "PT21M12.667S";
Duration start = Duration.parse(startAt);
Duration end = Duration.parse(endAt);
long millis = end.minus(start).toMillis();
System.out.println(millis);
}
}
输出:
1272667
从Trail: Date Time了解有关现代日期时间 API 的更多信息。