如何将 Firestore 日期/时间戳转换为 JS Date()?

我正在尝试将下面的日期转换为javascript Date()对象。当我从服务器取回它时,它是一个时间戳对象,

Firebase Firestore 控制台的屏幕截图:

enter image description here

当我在从firestore返回的对象列表上尝试以下操作时:

  list.forEach(a => {
    var d = a.record.dateCreated;
    console.log(d, new Date(d), Date(d))
  })

我得到这个输出: enter image description here

显然,时间戳都不同,并且不都是2018年9月9日(恰好是今天)的同一日期。我也不确定为什么会导致.我有点JS新手,我的日期或时间戳有问题吗?new Date(Timestamp)invalid date


答案 1

JavaScript Date的构造函数对Firestore Timestamp对象一无所知 - 它不知道如何处理它们。

如果要将时间戳转换为日期,请在时间戳上使用 toDate() 方法。


答案 2

您可以使用toDate()函数和toDateString()单独显示日期部分。

const date = dateCreated.toDate().toDateString()
//Example: Friday Nov 27 2017

假设你只想要时间部分,然后使用 toLocaleTimeString()

const time = dateCreated.toDate().toLocaleTimeString('en-US')
//Example: 01:10:18 AM, the locale part 'en-US' is optional