You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DASH Manifest中PT时间格式是什么?Java如何将其转成毫秒?

问题解答

一、时间格式定义

你遇到的PT461486H44M42.24S是ISO 8601标准的持续时间格式,DASH规范用它来标记媒体时间段的起始偏移量,格式拆解如下:

  • P:标记这是一个持续时间(Period)
  • T:分隔日期与时间部分(此例无日期,直接衔接时间单元)
  • 461486H:代表461486小时(H为小时单位标识)
  • 44M:代表44分钟(M为分钟单位标识)
  • 42.24S:代表42.24秒(S为秒单位标识,小数部分对应毫秒级精度)

二、Java中转换为毫秒数的实现

SimpleDateFormat仅用于解析常规日期时间格式,无法处理这种持续时间格式,推荐用以下两种方案:

方案1:Java 8+ 原生API(java.time.Duration)

JDK8引入的新时间API可以直接解析ISO 8601持续时间格式,代码示例:

String durationStr = "PT461486H44M42.24S";
Duration duration = Duration.parse(durationStr);
long milliseconds = duration.toMillis();
// 输出转换后的毫秒数
System.out.println(milliseconds);

该类支持大数值的小时单位,完全能处理示例中的46万多小时场景。

方案2:JDK8之前的兼容方案(javax.xml.datatype.Duration)

如果项目基于JDK7及以下,可借助XML相关的Duration类实现转换:

import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.Duration;

public class DurationConverter {
    public static void main(String[] args) throws DatatypeConfigurationException {
        String durationStr = "PT461486H44M42.24S";
        Duration duration = DatatypeFactory.newInstance().newDuration(durationStr);
        // 传入任意参考日期即可,不影响总持续时间的毫秒计算
        long milliseconds = duration.getTimeInMillis(new java.util.Date());
        System.out.println(milliseconds);
    }
}

内容的提问来源于stack exchange,提问作者WISHY

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 23:18:32