如何在firestore中保存日期值

Posted

技术标签:

【中文标题】如何在firestore中保存日期值【英文标题】:How to save a date value in firestore 【发布时间】:2018-07-23 06:40:10 【问题描述】:

type="date"html 中保存为 firestore 中的字符串。

在 html 文件中。

<input #scheduledStartDate="ngModel" [(ngModel)]="reposition.scheduledStartDate"
name="scheduledStartDate" id="scheduledStartDate" class="input is-normal"
type="date" required placeholder="Leaving...">

来自接口 .ts 文件

scheduledStartDate?: DateTimeFormat;

也试过了

scheduledStartDate?: Date;

同样的结果。

这两个选项都将输入的日期值保存为 Firestore 中的字符串,例如“2018-01-02”而不是时间戳

【问题讨论】:

你能提供一些示例代码吗? 你找到方法了吗? 如果您使用 Firestore 控制台创建文档并选择 timestamp 作为字段类型,它将保存为 ISO8601 字符串。此外,文档的createTimeupdateTime 参数也以这种格式存储。因此,除非您有非常具体的要求将该日期存储为 Linux/Unix 时间戳,否则我建议您坚持使用当前格式。 【参考方案1】:

在将 javascript 对象保存到 firestore 之前,只需创建一个 Date() 实例并像这样传递值 new Date("December 10, 1815")

语法

var docData = 
    stringExample: "Hello world!",
    booleanExample: true,
    numberExample: 3.14159265,
    dateExample: new Date("December 10, 1815"),
    arrayExample: [5, true, "hello"],
    nullExample: null,
    objectExample: 
        a: 5,
        b: 
            nested: "foo"
        
    
;
db.collection("data").doc("one").set(docData).then(function() 
    console.log("Document successfully written!");
)

Cloud Firestore 支持,

日期和时间 - 时间顺序 - 当存储在 Cloud Firestore 中时,精确到微秒;任何额外的精度都会向下舍入。

注意

当查询涉及具有混合类型值的字段时,Cloud Firestore 使用基于内部表示的确定性排序。

官方链接

https://firebase.google.com/docs/firestore/manage-data/data-types https://firebase.google.com/docs/firestore/manage-data/add-data

【讨论】:

【参考方案2】:

你应该使用下面的firestore函数firebase.firestore.Timestamp.fromDate

const mydoc = 
  name: 'John Doe',
  createdAt: firebase.firestore.Timestamp.fromDate(new Date("December 10, 1815")) 


// save the document 
db.collection("mycollection").doc("id1").set(mydoc).then(function() 
    console.log("Document successfully written!");
);

【讨论】:

以上是关于如何在firestore中保存日期值的主要内容,如果未能解决你的问题,请参考以下文章

从firestore查询数据时,如何将保存的字符串格式的日期与当前日期进行比较?

Firestore 如何保存日期?

如何按创建日期而不是名称对 Cloud Firestore 集合中的文档进行排序?

如何将值添加到从颤振到 Firestore 的数组中

如何使用flutter-web将时间戳存储在firestore中

如何在 Kotlin 中将 Firestore 日期/时间戳转换为日期?