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

如何用moment.js将PThhHmmMssS格式(如PT7H45M26.75S)转时间戳?

PThhHmmMssS格式转时间戳:标准说明与moment.js实现方案

格式标准说明

你提到的PThhHmmMssS(示例:PT7H45M26.75S)是ISO 8601时长格式,属于国际标准化组织定义的时间表示规范:

  • P是Period(时段)的标识,用来开头声明这是一个时长值
  • T是日期与时间部分的分隔符(这个示例里只有时间部分,所以T后面直接跟时间单位)
  • H/M/S分别对应小时、分钟、秒单位,数值可以是整数或小数(比如26.75S代表26.75秒)

moment.js实现转换

moment.js完全支持解析这种ISO 8601时长格式,不过要注意:时长是相对值,时间戳是绝对时间点,所以需要结合一个基准时间来计算对应的时间戳,具体实现如下:

1. 基于当前时间生成时间戳

把时长加到当前时间上,得到对应的毫秒级时间戳:

// 解析目标时长
const targetDuration = moment.duration('PT7H45M26.75S');
// 计算当前时间加上时长后的时间戳
const timestamp = moment().add(targetDuration).valueOf();

2. 基于指定基准时间生成时间戳

如果需要以某个特定时间为基准(比如Unix纪元起点1970-01-01 00:00:00):

const targetDuration = moment.duration('PT7H45M26.75S');
// 以Unix纪元为基准,加上时长后转时间戳
const timestamp = moment.unix(0).add(targetDuration).valueOf();

3. 获取时长的总毫秒数(非时间戳)

如果只是需要这个时长对应的总毫秒数(不是绝对时间点),可以直接调用:

const totalMilliseconds = moment.duration('PT7H45M26.75S').asMilliseconds();
// 输出示例:27926750(7*3600000 + 45*60000 + 26.75*1000)

注意事项

确保你的moment.js版本在2.29.x及以上,旧版本可能对带小数秒的ISO时长格式支持不佳。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 14:06:02