javascript - 在 Luxon 中像持续时间一样解析 ISO 8601

标签 javascript typescript duration luxon

我的持续时间字符串如下所示:

1:16.352

其中 1 是分钟部分,16 是秒部分,352 是毫秒部分。

我想使用 Duration.fromISOTime 但我得到:

{
  "reason": "unparsable",
  "explanation": "the input \"1:16.352\" can't be parsed as ISO 8601"
}

在 Luxon 中是否有一种清晰的方法来解析这种持续时间?

最佳答案

Duration.fromISOTime不起作用,因为 1:16.352 不是 ISO 8601 时间字符串,缺少小时部分(参见 I SO 8601 Times )。

构建 Luxon Duration 对象的解决方法如下:

const DateTime = luxon.DateTime;
const Duration = luxon.Duration;

const startOfHour = DateTime.local().startOf('hour').toMillis();
const dt = DateTime.fromFormat("1:16.352", "m:ss.SSS"). toMillis();
const dur = Duration.fromMillis(dt - startOfHour);
console.log(dur.toFormat("m 'minute' s 'second' S 'millis'"));
<script src="https://cdn.jsdelivr.net/npm/luxon@1.26.0/build/global/luxon.js"></script>

关于javascript - 在 Luxon 中像持续时间一样解析 ISO 8601,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66258241/

相关文章:

javascript - 在使用 testing-library 进行测试时使用 getByRole 时无法获取输入的名称

typescript - NestJs Swagger 混合类型

angular - 动态路由已添加到路由器但不起作用

swift - 如何获得当前正在进行的 SCNAction 的剩余持续时间?

javascript - 我可以在 expo 弹出后使用 expo 包吗

javascript - 为什么 Node.js setImmediate 在 I/O 回调之后执行?

javascript - 继承和 TypeScript 错误 : X is not a constructor function type

java - 测量 Java 执行时间

google-analytics - 根据谷歌分析访问持续时间

javascript - 从命令行使用 headless chrome 执行单个 Javascript 文件