1

I am using the following script in order convert microSeconds in hh:mm using date-fns but I get the wrong formatting:

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

for example in this case I would need to get '00:01' but instead I get 01:01

Any idea how to fix it?

Runnable code https://stackblitz.com/edit/date-fns-playground-cdgduf

4

2 回答 2

2

这是因为date-fns格式功能依赖于语言环境。格式的文档包含信息(在接受令牌的表格下):

结果可能因地区而异。

您可以减去时区偏移量:

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

于 2018-07-26T09:35:51.730 回答
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

于 2018-07-26T08:36:41.647 回答