flutter Firestore 时间戳 终极解决方案

项目场景:

在日常工作中,我们其实很少遇到,需要解析Google firestore 格式的时间戳的问题,正好我前一段时间遇到了,在此分享一下,我解析 Timestamp(seconds=1556459022, nanosecond=0) 时间戳的方法,然而这种时间格式,并不是我们常用的格林威治时间格式,那么我们该怎么来解析呢?


问题描述

当初面临这个问题的时候,我也在网上查阅了大量的文章,但是都无法解决我的问题,在我们拿到数据数据库的时间之后,其实是一个字符串,那么我们首先得把字符串转换成时间的格式,但是需要我们怎么转换呢?


原因分析:

面对上面抛出的问题,我的个人解决方案是,先把 Timestamp(seconds=1556459022, nanosecond=0) 字符串中的seconds 和 nanosecond 的值给提取出来,然后再把两个值赋值给Timestamp 对象,这样我们就能把字符串格式,转换成Timestamp 时间格式了,然后再调用它的toDate() 方法。


解决方案:

具体的解决方案,我在这里封装了一个方法,当然,你也可以直接拿过去使用。

  static DateTime conversionDate(String timestamp) {
    final int seconds = int.parse(timestamp.substring(18, 28)); // 1621176915
    final int nanoseconds = int.parse(
        timestamp.substring(42, timestamp.lastIndexOf(')'))); // 276147000
    final Timestamp postConverted = Timestamp(seconds, nanoseconds);

    return postConverted.toDate();
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

半身风雪

感谢打赏,你的鼓励,是我创作的

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值