将日期转换为时间戳,以便在JavaScript中存储到Firebase Firestore中。

5 浏览
0 Comments

将日期转换为时间戳,以便在JavaScript中存储到Firebase Firestore中。

我目前正在使用Math.floor(Date.now() / 1000)来获取正确的时间戳格式,以便将其添加到Firebase文档中,然而,时间戳会以数字形式插入,而不是作为时间戳插入。\n[图片](https://i.stack.imgur.com/pE1ph.png)\n我希望它能像下面显示的那样插入(作为时间戳,而不是数字)。\n[图片](https://i.stack.imgur.com/0JeaX.png)\n这可能吗?

0
0 Comments

问题的原因是在使用Firebase Firestore存储数据时,需要将日期转换为时间戳(timestamp)格式。在使用JavaScript编写的Svelte项目中,作者在Web版本9下遇到了这个问题,并提供了解决方法。

解决方法是使用Firebase提供的Timestamp类将日期转换为时间戳格式。首先,需要从"/firestore"路径导入Timestamp类:

import { Timestamp } from "/firestore";

然后,通过调用fromDate()方法将日期转换为时间戳格式,并将其赋值给noteDate变量:

let noteDate = Timestamp.fromDate(new Date());

在这个上下文中,作者将新的note对象添加到UI中。之前,当该对象的日期仅为JavaScript日期对象时,与Firebase一起使用是没有问题的。但是,当调用所需的.toDate()方法时,会出现UI错误。

为了避免在JavaScript日期对象上调用.toDate()方法时出现UI错误,作者将日期转换为Firebase的Timestamp格式。

最后,作者提到在他的代码中未导入Timestamp类的情况下,导致fromDate()方法无法正常工作。

0
0 Comments

在使用Firebase的Firestore中,如果你想要将一个字段存储为时间戳,你需要发送一个JavaScript的Date对象或者一个Firestore的Timestamp对象作为该字段的值。

如果你想要使用Date对象,只需使用new Date(x),其中x是你之前尝试添加的毫秒值。

如果你想要使用Timestamp对象,你需要做更多的工作来将x转换为秒和纳秒的组合,并将其传递给构造函数,正如文档中所建议的那样。

嗨,Doug),你能提供一个在Angular应用程序中创建Timestamp的示例吗?

0
0 Comments

问题:如何将日期转换为时间戳以便存储到Firebase Firestore中?

解决方法:可以使用以下代码行:var myTimestamp = firebase.firestore.Timestamp.fromDate(new Date());

.fromDate是Firebase中的静态Timestamp类的静态方法。可以直接使用这个方法将日期转换为时间戳。

更新:如果您正在编写云函数,请参考JGuo的评论:admin.firestore.Timestamp.fromDate()

感谢这是最简单的解决方案,正是我在寻找的!出于某种原因,我找到的文档说要通过构造函数而不是通过静态方法传递日期。

直接发送new Date()或Date.now()就足够了。Firebase/Firestore会自行将其转换为时间戳。此外,您还可以使用moment.js来处理所有的日期操作。

如果您正在编写云函数,请使用admin.firestore.Timestamp.fromDate()

如何在App Script中访问这个函数?

同意发送new Date()就足够了,但是TypeScript需要一个类型-可以是Date或firebase.firestore.Timestamp(可以使用联合类型,但我不喜欢)

我必须使用firebase.default.firestore

如果您的对象在其构造函数中有逻辑,您可以在将其发送到Firestore之前使用JSON.parse(JSON.stringify(myObject))将其从对象原型中删除。这对我来说最终解决了自定义对象错误。

在新的firebase SDK中,您可以直接导入Timestamp,所以使用:const datetime = Timestamp.fromDate(new Date())

0