You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase聊天应用中date.getFullYear()返回3991而非2022求助

问题解决:Firebase时间戳转Date年份异常

原因分析

Firebase的serverTimestamp()存储的是Timestamp类型对象,并非直接的秒数数值。直接将该对象乘以1000会触发隐式类型转换,得到错误的超大数值,最终导致Date解析出异常年份。

正确处理方式

方式1:使用Timestamp内置转换方法

Firebase Timestamp自带toDate()方法,可直接生成正确的Date对象:

// 假设从Firebase文档中获取的timestamp为firebase.firestore.Timestamp类型
const date = timestamp.toDate();
const year = date.getFullYear(); // 得到正确年份

方式2:手动提取秒数与纳秒计算

如果需要手动处理,可提取Timestamp的秒数,结合纳秒转毫秒的部分计算:

const date = new Date(timestamp.seconds * 1000 + Math.floor(timestamp.nanoseconds / 1000000));
const year = date.getFullYear();

原代码问题说明

你之前的new Date(timestamp * 1000)中,timestamp是对象类型,直接做乘法会被转为[object Object]字符串,再强制转换为无效数值,最终生成的Date对象年份自然异常。

内容的提问来源于stack exchange,提问作者Harshavardhan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 14:15:34