gpt4 book ai didi

javascript - Firestore Timestamp.fromDate 不是 UTC

转载 作者:行者123 更新时间:2023-11-28 17:06:33 30 4
gpt4 key购买 nike

有人知道如何在 Firestore 中保留 UTC 时间戳吗?

在我的 Angular 应用程序中,如果我将今天的日期转换为如下所示的时间戳,最终会得到 UTC+2 (现在是夏令时)瑞士)Firestore 数据库中的日期

import {firebase} from '@firebase/app';
import '@firebase/firestore';

const myTimestamp = firebase.firestore.Timestamp.fromDate(new Date());

例如,如果我尝试从冬季时间转换日期,我最终会在数据库中得到 UTC+1 时间戳

const myTimestamp = firebase.firestore.Timestamp.fromDate(new Date(2019, 0, 1));

如果我使用 now() 我也会得到 UTC+2 日期

const now: firebase.firestore.Timestamp = firebase.firestore.Timestamp.now();

当我保存数据时,我没有做任何特别的事情:

const now: firebase.firestore.Timestamp = firebase.firestore.Timestamp.now();
const myTimestamp = firebase.firestore.Timestamp.fromDate(new Date());

const myData = {
created_at: now,
another_value: myTimestamp
};

await this.collection.add(myData);

知道如何为 Firestore 创建有效的 UTC 时间戳吗?

最佳答案

Firestore 时间戳中没有编码时区。它只是使用秒和纳秒(Timestamp 对象上的字段)的组合来存储距 Unix 纪元的偏移量。大多数日期/时间对象都是这样的 - 它们不关心时区是什么,它只是一个绝对时间点。

如果您在控制台中查看时间戳字段,您将看到计算机在其本地设置中使用的本地时区显示的时间。

如果将时间戳转换为 JavaScript Date 对象,该日期对象自然会在浏览器的本地时区中呈现自身,类似于控制台。

如果您想呈现特定时区的 Date 对象,您应该使用库来为您做到这一点,例如 moment.js .

关于javascript - Firestore Timestamp.fromDate 不是 UTC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55714631/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com