java - 计算两个时间点的持续时间 ISO 8601

标签 java time duration iso8601

我有以下数据:

"startAt": "PT0S",
"endAt": "PT21M12.667S"

startAt 定义视频的开始和 endAt 视频的结尾。 我如何计算这些点之间的时间?我猜它是 ISO 8601,我正在使用 Java,但我尝试的库 (Joda) 不能使用 endAt 参数。

最佳答案

这些是 ISO-8601 period 值(不是时间点)- 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 - 计算两个时间点的持续时间 ISO 8601,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18850418/

相关文章:

java - 使用 RestTemplate 进行外部 REST 端点调用时出错

java - 从菜单启动新 Activity

获取当前时间的 Java 代码

python - 我的功能需要负时间才能完成。到底发生了什么事?

session - Firebase Analytics如何精确地处理 session 持续时间/超时?

java - 如何加速Java中的minimax算法?

java - 如何在项目目录中包含 swagger 生成的类

Python/在定义的函数中导入模块?

ios - 如何减慢 CALayer.transform 动画的速度?

python - 如何在 Python 中格式化持续时间(timedelta)?