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

从1970年起获取Google Fit数据时日期参数无效问题求助

解决Google Fit起始时间戳无效的问题

嘿,这个坑我之前踩过!Google Fit的API对查询的起始时间有明确限制,你直接用-3600(对应1969年12月31日23:00 UTC)肯定会报错——它根本不允许查询这么早的时间,毕竟用户的Fit数据最早也就是他们开始使用Google Fit或关联设备的时间,而且API本身有最低时间阈值。

问题根源

你传入的起始时间远早于Google Fit系统允许的最早查询时间,所以触发了"日期无效"的错误提示。

两种解决方案

方案1:设置一个合理的"早期默认时间"

如果只是想获取用户所有可用的Fit数据,没必要硬卡1970年,直接设置一个足够早但API能接受的时间就行,比如十年前。这样API会自动返回用户实际有记录的数据,忽略无数据的时间段:

val endTime = System.currentTimeMillis() / 1000 // 转换成秒级时间戳
// 设置为十年前的时间,覆盖绝大多数用户的Fit使用周期
val startTime = endTime - 10 * 365 * 24 * 60 * 60 

val readRequest = DataReadRequest.Builder()
    .aggregate(DataType.AGGREGATE_STEP_COUNT_DELTA)
    .bucketByTime(1, TimeUnit.DAYS)
    .setTimeRange(startTime, endTime, TimeUnit.SECONDS)
    .build()

方案2:精确获取用户的最早Fit数据时间

如果需要更精准的起始时间,可以先查询用户最早的Fit记录时间,再用这个时间作为起始点:

// 先查询用户最早的步数记录(可替换为你需要的其他数据类型)
val earliestDataRequest = DataReadRequest.Builder()
    .read(DataType.TYPE_STEP_COUNT_DELTA)
    .setTimeRange(0, System.currentTimeMillis() / 1000, TimeUnit.SECONDS)
    .setLimit(1)
    .setSortDescending(false) // 升序排序,第一条就是最早的记录
    .build()

// 执行查询并获取最早时间
GoogleFit.getHistoryClient(context, GoogleSignIn.getLastSignedInAccount(context)!!)
    .readData(earliestDataRequest)
    .addOnSuccessListener { result ->
        val earliestTime = if (result.dataPoints.isNotEmpty()) {
            result.dataPoints.first().getStartTime(TimeUnit.SECONDS)
        } else {
            // 如果用户还没有任何数据,设置一个默认的早期时间
            System.currentTimeMillis() / 1000 - 365 * 24 * 60 * 60
        }

        // 用获取到的最早时间构建最终查询请求
        val readRequest = DataReadRequest.Builder()
            .aggregate(DataType.AGGREGATE_STEP_COUNT_DELTA)
            .bucketByTime(1, TimeUnit.DAYS)
            .setTimeRange(earliestTime, System.currentTimeMillis() / 1000, TimeUnit.SECONDS)
            .build()
        
        // 继续处理查询结果...
    }

额外注意

Google Fit对不同数据类型的保留期限有差异:原始数据可能只保留数月,而聚合数据(比如你用的AGGREGATE_STEP_COUNT_DELTA)会保留更久,所以用十年前的时间作为起始点是非常安全的选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 21:37:37