date-fns 格式没有正确格式化微秒?

date-fns format does not format properly microSeconds?

我正在使用以下脚本来转换 hh:mm 中的微秒 date-fns 但我得到了错误的格式:

const microSeconds = 100000000 format(addMilliseconds(new Date(0), microSeconds / 1000), 'hh:mm')}

例如,在这种情况下,我需要得到“00:01”,但我得到的是 01:01

知道如何解决吗?

可运行代码 https://stackblitz.com/edit/date-fns-playground-cdgduf

根据这个例子:

import { format } from 'date-fns';
const formatedValue = format(0, 'hh:mm')
// output: 01:00

您不应使用 date-fns 将持续时间转换为人类可读的 string,因为它始终取决于时区。您应该实现自己的格式函数,因为它是基本的除法和乘法。

工作示例=> https://stackblitz.com/edit/date-fns-playground-whz5tg?file=app.ts

这是因为date-fns格式功能依赖于语言环境。 Format's docs 包含信息(在 table 下带有接受的标记):

The result may vary by locale.

您可以减去时区偏移量:

const d = new Date(0);
const formatedValue = format(
   addMilliseconds(new Date(0 + d.getTimezoneOffset()*1000*60), microSeconds / 1000), 'HH:mm')

也将日期格式更改为 HH:mm,因为 hh 介于 01 和 12 之间