如何自定义`serverTimestamp()`?

时间:2019-08-27 10:14:59

标签: firebase google-cloud-firestore

我要自定义setTimestamp()

firebase.firestore.FieldValue.serverTimestamp()

当前输出类似于August 27, 2019 at 3:38:55 PM UTC+5:30。如果我希望结果仅是August 27, 2019怎么办?

3 个答案:

答案 0 :(得分:1)

将时间戳类型字段写入Cloud Firestore时,它只是存储一个描述时刻的值,该时刻对于地球上的所有人而言都是相同的。您在控制台中看到的只是控制台用来使人们可读的格式。时区以计算机的配置时区表示。

如果您正在代码中读取该时间戳,并希望对其进行格式化以使其在应用中显示,则需要使用一些日期格式化库来简化此操作。看来您可能正在使用JavaScript,所以请考虑使用诸如momentjs之类的库来帮助实现这一点。您可能必须先将时间戳转换为Date类型的对象。

答案 1 :(得分:0)

Firebase始终以一致的方式设置timestamp

  

时间戳记表示与任何时区或日历无关的时间点,以UTC纪元时间中的纳秒分辨率表示为秒和秒的分数。

由于您提供的输出具有时区,因此我猜想在生成Date对象时,该时区已应用于您的代码中的其他地方。

使用此日期对象,可以很容易地重新格式化以匹配所需的显示。如果您使用的是角度,一种简单的方法是使用date pipe

{{ dateObj | date }}               // output is 'Jun 15, 2015'
{{ dateObj | date:'medium' }}      // output is 'Jun 15, 2015, 9:43:11 PM'
{{ dateObj | date:'shortTime' }}   // output is '9:43 PM'
{{ dateObj | date:'mm:ss' }}       // output is '43:11'

答案 2 :(得分:0)

在模板中,可以调用时间戳字段的.toDate()方法。做类似的事情:

{{response.data().updatedAt.toDate() | date}}

日期管道支持多种格式:

{{response.data().updatedAt.toDate() | date:'short'}}
{{response.data().updatedAt.toDate() | date:'long'}}
... 

请参见datePipe documentation