首页 > 解决方案 > Firebase - 如何将 UTC 时间戳转换为 UTC-5?

问题描述

我正在构建一个应用程序来做研究文档。我正在构建的实用程序之一是用于跟踪某些实验的计数器。

现在,这个功能可以工作,但我唯一的问题是时间不准确。当我设置一个新的计数器时,我在正 (T+) 计数器上得到 +1 天 +1 小时的偏移量,而负 (T-) 计数器是精确的。

如何将 firebase 时间戳转换为本地时区以便使用?

这是代码:

    const now = new Date().getTime();      
    const distance = date - now;

    const days = Math.abs(Math.floor(distance / (1000 * 60 * 60 * 24)));
    const hours = Math.abs(Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)));
    const minutes = Math.abs(Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60)));
    const seconds = Math.abs(Math.floor((distance % (1000 * 60)) / 1000));

标签: javascriptfirebasegoogle-cloud-firestore

解决方案


Firebase/Google SDK 不提供任何本地化时间戳的方法。这完全取决于你。

时间戳(如 JavaScript Date 对象)始终在内部以 UTC 表示。您可以做的是使用时间戳对象上的toDate()方法将其转换为 Date 对象。之后,您可以使用任意数量的选项将其格式化为包含所需时区的内容。momentjs 通常用于此目的。

同样,需要明确的是,与时区格式的字符串相互转换是应用程序的责任。Firestore 的职责是仅在文档的字段中加载和存储该时刻,它使用 UTC 表示,这在所有主要操作系统中都很常见。


推荐阅读