提问人:Aprillion 提问时间:10/11/2023 最后编辑:Aprillion 更新时间:10/11/2023 访问量:46
猴子修补 JS Date 强制 UTC
Monkey patching JS Date to force UTC
问:
我们应用程序中的所有内容都使用 UTC,我们想要显示它,例如 从服务器总是午夜,不是 02:00 的 10。10 月的布拉格,不是纽约的 10 月 9 日晚上 8 点,只是没有时区的午夜。没有夏令时,没有闰秒,没有本地。一天结束,3小时后,...一切都在UTC中。as-is
2023-10-10T00:00:00Z
我们使用 https://docs.dhtmlx.com/gantt/(需要原生 Date),并将从 Ant Design v4(moment)迁移到 v5(dayjs 或 date-fns)。
我们现有的代码是一团糟,在某些文件中添加和减去本机日期,而在其他文件中使用。.getTimezoneOffset()
moment.utc()
我正在玩这个想法,只是用猴子修补 Date 对象来“一劳永逸”地解决这个问题:
/* eslint-disable no-extend-native, @typescript-eslint/no-unsafe-assignment */
Date.prototype.getTimezoneOffset = () => 0
Object.getOwnPropertyNames(Date.prototype).filter((method) => method.match(/UTC/)).forEach(method => {
// @ts-expect-error
Date.prototype[method.replace('UTC', '')] = Date.prototype[method]
})
/* eslint-enable */
我想问,但真的:What can possibly go wrong?
- 我应该期待哪些潜在的错误?
- 我们必须将哪些 npm 库放在“不使用”列表中?(或者更确切地说,评估库的步骤是什么?
答: 暂无答案
评论