javascript - 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));
解决方案
Firebase/Google SDK 不提供任何本地化时间戳的方法。这完全取决于你。
时间戳(如 JavaScript Date 对象)始终在内部以 UTC 表示。您可以做的是使用时间戳对象上的toDate()方法将其转换为 Date 对象。之后,您可以使用任意数量的选项将其格式化为包含所需时区的内容。momentjs 通常用于此目的。
同样,需要明确的是,与时区格式的字符串相互转换是应用程序的责任。Firestore 的职责是仅在文档的字段中加载和存储该时刻,它使用 UTC 表示,这在所有主要操作系统中都很常见。
推荐阅读
- visual-studio-code - 如何使用 Microsoft VSCode 隐藏/取消隐藏评论?
- c# - 创建新数据表会引发“Sytem.runtime.Interopservices.COMException”
- bash - 退出代码不会根据按下的按钮而改变,用于 bash 的对话框
- c# - 在 Visual Studio 2019 中注册自定义签入策略
- php - Laravel mix.version() 的缓存破坏不起作用
- post - 为什么我发布的文件没有到达服务器?
- javascript - tablesorter - 如何对子行和父行进行排序
- c# - 如何解决 BigInteger 不正确的结果?
- asp.net - Entity Framework Core 迁移失败并显示“无法加载文件或程序集‘System.Threading’”
- python - 如何创建 Tkinter GUI 停止按钮来中断需要数小时才能执行的功能?