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

如何使用date-fns在TypeScript中将ISO8601时长转换为秒数

使用date-fns在TypeScript中把ISO8601时长字符串转为秒数

前置准备

首先确保项目中已经安装date-fns,该库原生支持TypeScript类型定义,无需额外安装类型包:

npm install date-fns
# 或用yarn/pnpm
pnpm add date-fns

实现代码

核心用date-fns提供的parseISODuration方法解析ISO8601时长字符串,再把各时间单位换算为秒求和即可:

import { parseISODuration } from 'date-fns'

/**
 * 将ISO8601时长字符串转换为总秒数
 * @param isoDuration ISO8601格式的时长字符串,如"PT1M14S"
 * @returns 总秒数(整数)
 * @throws 输入非法ISO时长字符串时会抛出错误
 */
function convertISODurationToSeconds(isoDuration: string): number {
  const duration = parseISODuration(isoDuration)
  // 各时间单位换算为秒求和,可根据你的业务场景决定是否保留年/月/日等大单位的换算逻辑
  return Math.floor(
    (duration.years || 0) * 31536000 +
    (duration.months || 0) * 2592000 + // 按每月30天计算,如无需可删除
    (duration.days || 0) * 86400 +
    (duration.hours || 0) * 3600 +
    (duration.minutes || 0) * 60 +
    (duration.seconds || 0)
  )
}

示例测试

// 测试示例输入
const result = convertISODurationToSeconds("PT1M14S")
console.log(result) // 输出 74

注意事项

  • 如果你的业务场景中不会出现年、月、日级别的时长,可以删除对应换算逻辑减少冗余
  • 输入非法ISO8601时长字符串时parseISODuration会抛出错误,建议根据业务需要在外层加try/catch捕获处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 16:15:05