我要自定义setTimestamp()
。
firebase.firestore.FieldValue.serverTimestamp()
当前输出类似于August 27, 2019 at 3:38:55 PM UTC+5:30
。如果我希望结果仅是August 27, 2019
怎么办?
答案 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。