如何正确筛选最近一周完成的图书记录

胖伟大大_5321

胖伟大大_5321

2026-07-05

989人浏览

原创

如何正确筛选最近一周完成的图书记录

本文详解 android 开发中基于时间戳筛选“最近一周完成图书”的常见错误与修复方案,重点解决因毫秒级精度不匹配导致的条件判断失效问题,并提供健壮、可复用的时间过滤实现。

本文详解 android 开发中基于时间戳筛选“最近一周完成图书”的常见错误与修复方案,重点解决因毫秒级精度不匹配导致的条件判断失效问题,并提供健壮、可复用的时间过滤实现。

在 Android 应用中,当需要根据完成时间(如 endDate)动态筛选“最近一周内完成的图书”时,一个典型且隐蔽的陷阱是时间戳单位不一致。从你的日志可见:

End Date: 1684159940          ← 仅 10 位数字(秒级 Unix 时间戳)
One Week Ago Millis: 1683740684856  ← 13 位数字(毫秒级时间戳)

这说明 book.endDate 存储的是秒级时间戳(例如由 System.currentTimeMillis() / 1000 或后端返回的 JSON timestamp 字段生成),而 System.currentTimeMillis() 返回的是毫秒级时间戳。直接比较两者会导致 endDateMillis(约 16.8 亿)远小于 oneWeekAgoMillis(约 1.68 万亿),因此 if (endDateMillis >= oneWeekAgoMillis) 永远为 false,列表始终为空。

MuseArt AI
MuseArt AI

MuseArt AI是一款AI文本写作工具,一站式 AI 图像和视频创作平台。

下载

✅ 正确做法:统一单位为毫秒
将 book.endDate 乘以 1000 转换为毫秒后再参与比较:

private void lastWeekFilter(List<finishedbooks> finishedBooks) {
    List<finishedbooks> lastWeekList = new ArrayList();

    long currentTimeMillis = System.currentTimeMillis();
    long oneWeekAgoMillis = currentTimeMillis - 7L * 24L * 60L * 60L * 1000L;

    for (FinishedBooks book : finishedBooks) {
        // ✅ 关键修复:将秒级 endDate 转为毫秒
        long endDateMillis = book.endDate * 1000L;

        if (endDateMillis >= oneWeekAgoMillis && endDateMillis <p>⚠️ 注意事项与最佳实践:</p>
<ul>
<li>
<strong>验证数据来源</strong>:检查 FinishedBooks.endDate 的赋值逻辑。若来自 new Date().getTime() / 1000 或服务端 {"endDate": 1684159940},则必为秒级;若来自 System.currentTimeMillis() 直接赋值,则为毫秒级。</li>
<li>
<strong>避免硬编码时间计算</strong>:推荐使用 Calendar 或更现代的 java.time(需 API ≥ 26 或使用 desugaring)提升可读性与时区鲁棒性:<pre class="brush:php;toolbar:false;">// 兼容旧版(API 
  • 边界处理:当前逻辑包含 currentTimeMillis(即“截至此刻”),若需严格限定“过去 7×24 小时内”,该逻辑正确;若需“本周一至周日”等自然周,应改用 Calendar 的 setFirstDayOfWeek 和 getActualMinimum/Maximum。
  • 空值防护:生产环境建议增加 book.endDate > 0 判断,防止无效时间戳干扰。
  • 总结:时间筛选失败的根源往往不是逻辑错误,而是单位混淆。始终确认时间戳单位(秒 vs 毫秒),并在比较前显式对齐——这是移动开发中高频踩坑点,也是保障时间敏感功能稳定性的关键细节。

    PHP速学视频免费教程(入门到精通)
    PHP速学视频免费教程(入门到精通)

    PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

    下载

    相关标签:

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

    相关专题

    更多
    PixTV官网入口地址合集
    PixTV官网入口地址合集

    本专题汇总了 PixTV AI 一站式视频创作平台的官方入口与使用教程。无需下载软件,浏览器直接访问即可使用。平台将剧本、图像、视频、声音与剪辑整合在“无限画布”中,接入 GPT Image 2.5、Seedance 2.5 等头部模型。本专题整理了从新建画布、角色锚定、分镜拆分到视频生成与导出的完整操作指南,助你快速上手 AI 短剧与漫剧创作。

    2026.10.10

    80

    15

    Kratos框架HTTP与gRPC服务开发教程
    Kratos框架HTTP与gRPC服务开发教程

    本专题围绕Kratos框架双协议服务开发,涵盖HTTP路由与处理器编写、参数获取、gRPC服务实现与客户端调用、metadata上下文传递、encoding编解码注册、统一响应封装、超时控制与流式响应实现方法。

    2026.10.10

    40

    15

    Kratos框架Protobuf接口定义与代码生成合集
    Kratos框架Protobuf接口定义与代码生成合集

    本专题讲解Kratos框架接口定义体系,涵盖proto编写规范、proto add/client/server生成命令、http注解路由、validate校验、OpenAPI文档生成、跨服务proto复用与兼容性设计。

    2026.10.10

    20

    15

    C++虚函数怎么定义和调用
    C++虚函数怎么定义和调用

    C++虚函数是实现运行时多态的重要机制。本专题从virtual关键字的基本用法入手,介绍基类与派生类之间的函数重写、基类指针调用派生类方法,以及动态绑定的执行过程,帮助初学者掌握虚函数的核心语法。

    2026.10.10

    20

    26

    C++类与对象的封装方法教程
    C++类与对象的封装方法教程

    C++封装是面向对象编程的核心特性之一,通过类将数据与操作数据的函数组织在一起,并利用访问权限控制外部访问。本专题介绍类的定义、成员变量、成员函数以及public、private和protected的使用方法,帮助初学者掌握封装的基本原理。

    2026.10.10

    20

    32

    C++构造函数定义与调用方法
    C++构造函数定义与调用方法

    C++构造函数用于初始化类对象,是面向对象编程的重要基础。本专题从构造函数的定义、声明和调用入手,介绍默认构造函数、带参数构造函数、拷贝构造函数及成员初始化列表,帮助初学者掌握对象创建与初始化的基本方法。

    2026.10.10

    20

    16

    Kratos框架零基础入门教程
    Kratos框架零基础入门教程

    本专题整理Kratos框架入门内容,涵盖Go环境准备、kratos CLI安装升级、new命令创建项目、目录结构分层说明、服务启动与双协议端口、依赖下载报错排查,帮助开发者快速跑通第一个Kratos框架微服务应用。

    2026.10.10

    20

    15

    C++条件判断语句怎么写
    C++条件判断语句怎么写

    C++条件判断是控制程序执行流程的重要基础。本专题介绍if、if-else、else if和switch等常见分支语句,结合条件表达式、比较运算符与代码示例,帮助初学者掌握不同场景下的判断逻辑。

    2026.10.10

    20

    13

    C++变量怎么声明和赋值
    C++变量怎么声明和赋值

    C++变量是编写程序和存储数据的基础。本专题围绕变量声明、定义、初始化、赋值和类型选择等内容展开,帮助初学者理解不同变量的用法,并掌握在实际代码中定义和使用变量的方法。

    2026.10.10

    20

    20

    热门下载

    更多
    网站特效
    /
    网站源码
    /
    网站素材
    /
    前端模板

    精品课程

    更多
    热门推荐
    /
    最新课程
    phpStudy极速入门视频教程
    phpStudy极速入门视频教程

    共6课时 | 54.6万人学习

    独孤九贱(4)_PHP视频教程
    独孤九贱(4)_PHP视频教程

    共89课时 | 133.4万人学习