TimeUtils记录
/* long milliseconds 1500L; Log.d(Time, 四舍五入: TimeUtils.millisToSecondsRounded(milliseconds)); // 输出 2 Log.d(Time, 截断取整: TimeUtils.millisToSecondsTruncated(milliseconds)); // 输出 1 Log.d(Time, 向上取整: TimeUtils.millisToSecondsCeil(milliseconds)); // 输出 2 */ public class TimeUtils { // 四舍五入 public static long millisToSecondsRounded(long millis) { return Math.round(millis / 1000.0); } // 截断取整 public static long millisToSecondsTruncated(long millis) { return millis / 1000; } // 向上取整 public static long millisToSecondsCeil(long millis) { return (long) Math.ceil(millis / 1000.0); } /** * 将字符串灵活转换为毫秒时间戳 * param input 可能是日期时间字符串如 2026-07-23 06:00:08或数字字符串如 1758492008000 * return 毫秒时间戳 * throws IllegalArgumentException 如果无法解析 */ public static long toMilliseconds(String input) { if (StringUtils.isEmpty(input)) { return 0; } // 1. 尝试当作数字时间戳处理 if (isNumeric(input)) { try { return ensureMillisTimestamp(Long.parseLong(input)); // 改为调用新方法 } catch (NumberFormatException e) { throw new IllegalArgumentException(无法解析为时间戳数字: input, e); } } // 2. 否则按日期时间格式解析 DateTimeFormatter formatter DateTimeFormatter.ofPattern(yyyy-MM-dd HH:mm:ss); try { LocalDateTime ldt LocalDateTime.parse(input, formatter); // 使用系统默认时区转时间戳 return ldt.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli(); } catch (DateTimeParseException e) { throw new IllegalArgumentException(无法解析日期时间字符串: input, e); } } public static String toMillisecondsStr(String input) { return toMilliseconds(input) ; } /** * 确保时间戳是毫秒级如果不是如秒级10位则自动转为毫秒级 * p * 判断逻辑时间戳值小于 1000000000000L10^12视为秒级乘以1000转为毫秒 * 大于等于该阈值的视为已是毫秒级直接返回。 * * param timestamp 时间戳可能是秒级10位或毫秒级13位 * return 毫秒级时间戳 */ public static long ensureMillisTimestamp(long timestamp) { if (timestamp 0) { return timestamp; } // 小于 10^12 认为是秒级时间戳乘以 1000 转为毫秒 if (timestamp 1000000000000L) { return timestamp * 1000; } return timestamp; } /** * 确保时间戳是毫秒级String版本 * p * 先将字符串解析为 long再调用 {link #ensureMillisTimestamp(long)} 进行转换。 * * param timestampStr 时间戳字符串可能是秒级10位或毫秒级13位 * return 毫秒级时间戳解析失败返回 0 */ public static long ensureMillisTimestamp(String timestampStr) { if (StringUtils.isEmpty(timestampStr)) { return 0; } try { long timestamp Long.parseLong(timestampStr.trim()); return ensureMillisTimestamp(timestamp); } catch (NumberFormatException e) { return 0; } } /** * 支持指定时区的版本 * param input 同上 * param zoneId 时区ID如 Asia/Shanghai、UTC * return 毫秒时间戳 */ public static long toMilliseconds(String input, String zoneId) { if (isNumeric(input)) { return Long.parseLong(input); } DateTimeFormatter formatter DateTimeFormatter.ofPattern(yyyy-MM-dd HH:mm:ss); LocalDateTime ldt LocalDateTime.parse(input, formatter); return ldt.atZone(ZoneId.of(zoneId)).toInstant().toEpochMilli(); } // 辅助方法判断字符串是否表示整数允许负号 private static boolean isNumeric(String str) { if (str null || str.isEmpty()) return false; int start (str.charAt(0) -) ? 1 : 0; for (int i start; i str.length(); i) { if (!Character.isDigit(str.charAt(i))) { return false; } } return true; } /** * 计算年龄最正确的方式是用 LocalDate Period而不是时间戳相减 * param birthday 2025-7-5 * return */ public static int calculateAge(String birthday) { try { DateTimeFormatter formatter DateTimeFormatter.ofPattern(yyyy-MM-dd); LocalDate birthDate LocalDate.parse(birthday, formatter); // 以“今天”为基准计算年龄 LocalDate today LocalDate.now(); return Period.between(birthDate, today).getYears(); } catch (Exception e) { return -1; } } }毫秒转秒取整在 Java 或 Android 中将毫秒转换为秒并取整四舍五入或直接截断可以通过以下方式实现1. 四舍五入取整long milliseconds 12345L; // 示例毫秒值 long seconds Math.round(milliseconds / 1000.0); // 四舍五入说明Math.round() 对浮点数结果进行四舍五入。除以 1000.0 确保结果是浮点数避免整数除法截断。2. 直接截断取整向下取整long milliseconds 12345L; long seconds milliseconds / 1000; // 直接截断说明整数除法会自动丢弃小数部分相当于 Math.floor()。3. 向上取整long milliseconds 12345L; long seconds (long) Math.ceil(milliseconds / 1000.0); // 向上取整注意事项精度问题如果毫秒值是 int 类型注意避免整数溢出例如使用 long 存储大数值。负数处理上述方法同样适用于负数例如 -1500ms 会转换为 -1s 或 -2s取决于取整方式

相关新闻

ownCloud高危漏洞CVE-2023-49103修复与安全加固实战指南

ownCloud高危漏洞CVE-2023-49103修复与安全加固实战指南

1. 项目概述:当ownCloud警报拉响时 如果你正在管理一个ownCloud实例,那么最近的安全圈里,关于CVE-2023-49103的讨论你一定不会陌生。这可不是一个普通的漏洞,它被标记为“高危”,核心问题在于ownCloud的 graphapi 应…

2026/8/8 16:41:52 阅读更多 →
NVM 管理Node.js版本

NVM 管理Node.js版本

为什么选择 NVM for Windows? 痛点NVM 解决方案多项目版本冲突一键切换 Node.js 版本,互不干扰手动卸载安装繁琐一条命令完成安装 / 切换 / 删除环境变量配置复杂自动管理 PATH,无需手动修改系统盘空间占用可自定义安装路径,释放…

2026/8/8 16:41:52 阅读更多 →
简单图判断

简单图判断

题目描述 给定一个包含 n n 个顶点和 m m 条边的无向图。顶点编号为 1 , 2 , . . . , n 1,2,...,n ,第 i i 条边连接顶点 a i a i ​和 b i b i ​,判断这个图是否为简单图 (无重边且无自环) ,如果是简单图,则输出 yes&am…

2026/8/8 16:41:52 阅读更多 →

最新新闻

MySQL聚簇索引与非聚簇索引:核心差异与性能对比

MySQL聚簇索引与非聚簇索引:核心差异与性能对比

引言在MySQL数据库优化中,索引设计是提升查询性能的关键。聚簇索引和非聚簇索引作为两种核心的索引实现方式,在存储引擎层面有着本质的区别。理解这两种索引的工作原理和差异,对于设计高效的数据库架构至关重要。本文将从存储逻辑、查询性能和…

2026/8/8 17:34:18 阅读更多 →
从“试用版焦虑“到完全掌控:微软激活脚本MAS如何改变你的数字生活

从“试用版焦虑“到完全掌控:微软激活脚本MAS如何改变你的数字生活

从"试用版焦虑"到完全掌控:微软激活脚本MAS如何改变你的数字生活 【免费下载链接】Microsoft-Activation-Scripts Open-source Windows and Office activator featuring HWID, Ohook, TSforge, and Online KMS activation methods, along with advanced t…

2026/8/8 17:34:18 阅读更多 →
Kronos金融AI模型:快速上手智能交易系统的完整指南

Kronos金融AI模型:快速上手智能交易系统的完整指南

Kronos金融AI模型:快速上手智能交易系统的完整指南 【免费下载链接】Kronos Kronos: A Foundation Model for the Language of Financial Markets 项目地址: https://gitcode.com/GitHub_Trending/kronos14/Kronos Kronos是首个专注于金融市场K线序列的开源基…

2026/8/8 17:34:18 阅读更多 →
实用小技巧汇总

实用小技巧汇总

目录 Android git提交记录抓取 Android Java打印调用堆栈 ssh-copy-id命令(免密) Android git提交记录抓取 repo forall -p -c "git log --grep\(CTS\|STS\|GTS\|GTVS\|GSI\|VTS\|TVTS\) --extended-regexp --author"YOUR NAME" --sin…

2026/8/8 17:34:18 阅读更多 →
Microsoft Activation Scripts:5分钟掌握Windows和Office免费激活的完整指南

Microsoft Activation Scripts:5分钟掌握Windows和Office免费激活的完整指南

Microsoft Activation Scripts:5分钟掌握Windows和Office免费激活的完整指南 【免费下载链接】Microsoft-Activation-Scripts Open-source Windows and Office activator featuring HWID, Ohook, TSforge, and Online KMS activation methods, along with advanced …

2026/8/8 17:34:18 阅读更多 →
idea试用期到期如何无限续期,(含最新2025版idea)

idea试用期到期如何无限续期,(含最新2025版idea)

方案1:重置30天试用 最新Idea重置办法!: 1、删除C:\Users\(用户名)\AppData\Local\JetBrains\IntelliJIdea2020.2 下所有文件(注意:是子目录全部删除) 2、删除C:\Users\(用户名)\AppData\Roami…

2026/8/8 17:33:18 阅读更多 →

日新闻

AI多智能体时代来临,读懂MCP与A2A架构,抢占企业数字化新风口

AI多智能体时代来临,读懂MCP与A2A架构,抢占企业数字化新风口

当下AI应用飞速普及,无数企业下场搭建智能体系统,可落地阶段难题接踵而至:上下文无限堆积频繁爆栈、AI工具调用准确率低下、Token成本居高不下、企业数据权限混乱暗藏安全隐患……很多团队卡在架构搭建环节,空有前沿技术概念&…

2026/8/8 0:00:07 阅读更多 →
PHP二维码生成终极指南:用chillerlan/php-qrcode打造专业级二维码

PHP二维码生成终极指南:用chillerlan/php-qrcode打造专业级二维码

PHP二维码生成终极指南:用chillerlan/php-qrcode打造专业级二维码 【免费下载链接】php-qrcode A PHP QR Code generator and reader with a user-friendly API. 项目地址: https://gitcode.com/gh_mirrors/ph/php-qrcode 在当今数字时代,二维码已…

2026/8/8 0:00:08 阅读更多 →
UniApp微信小程序隐私保护组件开发:从原理到实战

UniApp微信小程序隐私保护组件开发:从原理到实战

1. 项目缘起:为什么我们需要一个隐私保护通用组件?最近在维护一个基于uniapp开发的微信小程序矩阵时,我遇到了一个非常棘手的问题。随着平台对用户隐私保护的要求越来越严格,几乎每一个新版本发布,或者在某些特定机型&…

2026/8/8 0:00:08 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/8 17:02:43 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/8 8:58:26 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/7 23:24:08 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/8 17:02:44 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/7 23:54:54 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/8 17:02:44 阅读更多 →