date-fns格式无法正确格式化microSeconds?

时间:2018-07-26 08:27:24

标签: javascript date-fns

我正在使用以下脚本,以便使用以下命令在hh:mm中转换microSeconds 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

2 个答案:

答案 0 :(得分:1)

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

  

结果可能因地区而异。

您可以减去时区偏移量:

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之间

答案 1 :(得分:0)

根据此示例:

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