我正在使用以下脚本,以便使用以下命令在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
答案 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