Luxon 只为 Safari 14 浏览器在未来创建日期而不是过去

问题描述

早上好,StackOverflowians!

如果之前有人回答过这个问题,我深表歉意,但我找不到遇到完全相同问题的人,也没有通过研究找到解决方案...

故事是这样的:

我有一个 AsOf 日期,在 DateTime 中从服务器进入我的反应应用程序。该日期通过camelcaseKeys 转换为camel-cased JSON。然后使用该行在应用程序中显示此日期

{DateTime.fromISO(obj.asOf).toRelative()}

...其中 obj 是具有 asOf 属性的对象,假定为非 null 并且在我们的情况下格式正确。 DateTime、fromISO 和 toRelative 均来自 luxon。

代码在我们需要的所有浏览器(Chrome、IE11、Firefox 等)上都能正常运行。在测试中,它也能在 Safari 13、Mac OS 10.15 上正常运行。

但是,在 Safari 14 和 Mac OS 11 上,它始终会导致显示日期在未来。该代码输出不是“一分钟前”,而是“一分钟内”。在后来的一些测试中,它一直“在 27 秒内”。

如上所述,我还没有找到解决方案,也没有其他人遇到同样的问题。如果您有任何想法、建议或以前遇到过这种情况,请加入 =)。您的英雄主义将不胜感激!

解决方法

不幸的是,该解决方案与 React 或 Luxon 无关。我们使用的测试机有一个坏掉的时钟,在计算相对时间时会导致奇怪的结果。请参阅问题的评论以进行解释。