避免 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 小时。这种错误应该在时间存储时统一规避,以避免前端展示错误的时间信息。当然在前端处理时间信息时,也应该多注意时区的格式和时区问题。
- 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