避免 Day.js 与 UTC 时区的常见陷阱

九號

在前端开发中,我们通常使用 Day.js 来格式化从后端传递过来的时间数据。后端传来的时间通常是标准的 UTC 格式,例如:

  • 2015-09-01T14:55:00+00:00
    • 2015-09-01 表示日期,格式为 YYYY-MM-DD
    • T 是日期和时间的分隔符
    • 14:55:00 表示时间,格式为 HH:MM:SS
    • +00:00 表示时区偏移,+00:00 代表 UTC 时间 因为之前公司一直都是把本地时间直接存UTC时区+00:00,但这种做法存在不规范之处——在不同的时区查看时间时可能会出现错误。实际上,更为标准的做法是将本地时间按照当地时区(如 +08:00)存储。

由于之前的习惯,前端代码通常是这样来格式化时间的:

1
dayjs.utc(item.filledOn).format('YYYY-MM-DD HH:mm:ss');

这段代码的假设前提是所有存储的时间都是 UTC 时间。因此,当我们遇到如下时间格式时:

1
2024-08-26T09:56:45.403258+08:00

这时使用 dayjs.utc() 进行格式化,就会导致时间被错误地减去 8 小时。这种错误应该在时间存储时统一规避,以避免前端展示错误的时间信息。当然在前端处理时间信息时,也应该多注意时区的格式和时区问题。

UTC·Day.js

协调世界时·维基百科

  • Title: 避免 Day.js 与 UTC 时区的常见陷阱
  • Author: 九號
  • Created at : 2024-08-24 10:00:00
  • Updated at : 2024-08-31 16:58:25
  • Link: https://jhao.me/posts/2/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments
On this page
避免 Day.js 与 UTC 时区的常见陷阱