【问题标题】:How to save Date as Timestamp in Angular Firestore?如何在 Angular Firestore 中将日期保存为时间戳?
【发布时间】:2020-02-09 21:00:27
【问题描述】:
firestore.Timestamp.now();

我试过这种方式,它把日期保存为地图。

nanoseconds: 388000000
seconds: 1570897877

纳秒和秒类型都是数字。

我想使用 Angular 将日期保存为 Firestore 时间戳。我发现重复的问题没有被接受的答案。

【问题讨论】:

  • 请编辑问题以显示将数据添加到 Firestore 的完整代码(不仅仅是对单个函数的调用)。我们应该能够准确地重现您所看到的内容。还要考虑使用FieldValue.serverTimestamp() 通常是您用来让服务器将当前时间放在字段中的方法。 firebase.google.com/docs/reference/js/…

标签: angular typescript google-cloud-firestore timestamp angularfire2


【解决方案1】:
import * as firebase from 'firebase';

...


const data = {
    createdAt: firebase.default.firestore.FieldValue.serverTimestamp(),
};

这段代码对我有用。 重要的部分是来自根 firebase 对象的.default

【讨论】:

    【解决方案2】:

    如果您想在 Firestore 文档中添加当前时间作为时间戳值,您可以使用 FieldValue.serverTimestamp() 添加它,如 Doug 所述,如下例所示:

    import * as firebase from 'firebase';
    [ . . . ]
    db.collection('times').add({time: firebase.firestore.FieldValue.serverTimestamp()});
    

    如果你想得到一个特定的时间,你可以创建一个新的 Date 对象,并使用它上面的函数toDateString() 将它添加到你的 Firestore,如下:

    import * as firebase from 'firebase';
    [ . . . ]
    date = new Date('2018-11-16T09:48:51.137Z'); //sample date
    this.db.collection('times').add({spec_time: this.date.toDateString()});
    

    【讨论】:

      【解决方案3】:

      您可以使用firebase.database.ServerValue.TIMESTAMP

      导入 firebase

      import * as firebase from 'firebase';
      

      初始化

      firebase.initializeApp(environment.firebase);
      

      那么你可以使用

      firebase.database.ServerValue.TIMESTAMP
      

      以毫秒为单位获取时间戳

      现在,如果您想将时间戳保存为日期,那么只需将时间戳按时刻转换为您想要的格式并将其保存到数据库中

      db.object("collection").set(moment(firebase.database.ServerValue.TIMESTAMP).toDate());
      

      【讨论】:

        猜你喜欢
        • 2019-04-19
        • 2019-12-02
        • 2019-09-13
        • 2021-02-19
        • 1970-01-01
        • 1970-01-01
        • 2020-08-10
        • 2020-06-07
        相关资源
        最近更新 更多