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

Firestore Timestamp字段取日期天数报错:Timestamp非String子类型

解决Firestore Timestamp提取日期天数的问题

核心解决方案

Firestore的Timestamp类型不能直接转换为字符串或提取日期分量,必须先转为DateTime对象,再从中获取天数:

// 从Firestore文档中获取Timestamp类型字段
Timestamp firestoreTimestamp = doc.data()['target_timestamp'] as Timestamp;

// 转换为Dart标准DateTime类型
DateTime date = firestoreTimestamp.toDate();

// 提取日期中的天数
int dayOfMonth = date.day;

报错原因解释

你遇到的type 'Timestamp' is not a subtype of type 'String'错误,是因为直接将Timestamp对象当作字符串处理(比如调用.toString()后赋值给String类型变量,或直接把Timestamp赋值给String类型变量)。Timestamp是Firestore专属类型,必须通过.toDate()方法转为Dart标准的DateTime类型,才能操作日期相关属性。

额外注意事项

  • 如果字段可能为空,务必添加空安全判断:
    final timestampData = doc.data()?['target_timestamp'];
    if (timestampData is Timestamp) {
      int day = timestampData.toDate().day;
      // 后续逻辑处理
    }
    
  • 从Firestore获取字段时,确保类型声明为Timestamp而非String或DateTime,避免类型不匹配问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 07:32:03