Java日期时间API系列41-----根据毫秒值计算倒计时
会有一个比较常见的需求,计算倒计时,比如,计算距离某时间剩余时间(27小时10分钟30秒、1天3小时10分钟30秒)或者已经进行了多长时间等。下面是2种实现代码:其中第一种超过1天会体现在小时上,比如27小时10分钟30秒。
/**
* 根据毫秒值计算倒计时
* @param millis 相差毫秒值
* @return 返回倒计时,millis 小于等于0 返回:0小时0分钟0秒
*/
public static String countdown(long millis){
if (millis <= 0) {
return "0小时0分钟0秒";
}
Duration duration = Duration.ofMillis(millis);
long hours = duration.getSeconds() / XkTimeConstant.SECONDS_PER_HOUR;
int minutes = (int) ((duration.getSeconds() % XkTimeConstant.SECONDS_PER_HOUR) / XkTimeConstant.SECONDS_PER_MINUTE);
int seconds = (int) (duration.getSeconds() % XkTimeConstant.SECONDS_PER_MINUTE);
StringBuilder buf = new StringBuilder(24);
buf.append(hours).append("小时");
buf.append(minutes).append("分钟");
buf.append(seconds).append("秒");
return buf.toString();
} /**
* 根据毫秒值计算倒计时,包含天数
* @param millis 相差毫秒值
* @return 返回倒计时,millis 小于等于0 返回:0天0小时0分钟0秒
*/
public static String countdownWithDay(long millis){
if (millis <= 0) {
return "0天0小时0分钟0秒";
}
Duration duration = Duration.ofMillis(millis);
long days = duration.getSeconds() / XkTimeConstant.SECONDS_PER_DAY;
int hours = (int) ((duration.getSeconds() % XkTimeConstant.SECONDS_PER_DAY) / XkTimeConstant.SECONDS_PER_HOUR);
int minutes = (int) ((duration.getSeconds() % XkTimeConstant.SECONDS_PER_HOUR) / XkTimeConstant.SECONDS_PER_MINUTE);
int seconds = (int) (duration.getSeconds() % XkTimeConstant.SECONDS_PER_MINUTE);
StringBuilder buf = new StringBuilder(24);
buf.append(days).append("天");
buf.append(hours).append("小时");
buf.append(minutes).append("分钟");
buf.append(seconds).append("秒");
return buf.toString();
}
源码地址: https://github.com/xkzhangsan/xk-time
Java日期时间API系列41-----根据毫秒值计算倒计时的更多相关文章
- Java日期时间API系列19-----Jdk8中java.time包中的新的日期时间API类,ZonedDateTime与ZoneId和LocalDateTime的关系,ZonedDateTime格式化和时区转换等。
通过Java日期时间API系列6-----Jdk8中java.time包中的新的日期时间API类中时间范围示意图:可以很清晰的看出ZonedDateTime相当于LocalDateTime+ZoneI ...
- Java日期时间API系列8-----Jdk8中java.time包中的新的日期时间API类的LocalDate源码分析
目录 0.前言 1.TemporalAccessor源码 2.Temporal源码 3.TemporalAdjuster源码 4.ChronoLocalDate源码 5.LocalDate源码 6.总 ...
- Java日期时间API系列11-----Jdk8中java.time包中的新的日期时间API类,使用java8日期时间API重写农历LunarDate
通过Java日期时间API系列7-----Jdk8中java.time包中的新的日期时间API类的优点,java8具有很多优点,现在网上查到的农历转换工具类都是基于jdk7及以前的类写的,下面使用ja ...
- Java日期时间API系列12-----Jdk8中java.time包中的新的日期时间API类,日期格式化,常用日期格式大全
通过Java日期时间API系列10-----Jdk8中java.time包中的新的日期时间API类的DateTimeFormatter, 可以看出java8的DateTimeFormatter完美解决 ...
- Java日期时间API系列6-----Jdk8中java.time包中的新的日期时间API类
因为Jdk7及以前的日期时间类的不方便使用问题和线程安全问题等问题,2005年,Stephen Colebourne创建了Joda-Time库,作为替代的日期和时间API.Stephen向JCP提交了 ...
- Java日期时间API系列13-----Jdk8中java.time包中的新的日期时间API类,时间类转换,Date转LocalDateTime,LocalDateTime转Date等
从前面的系列博客中可以看出Jdk8中java.time包中的新的日期时间API类设计的很好,但Date由于使用仍非常广泛,这就涉及到Date转LocalDateTime,LocalDateTime转D ...
- Java日期时间API系列3-----Jdk7及以前的日期时间类的不方便使用问题
使用Java日期时间类,每个人都很熟悉每个项目中必不可少的工具类就是dateutil,包含各种日期计算,格式化等处理,而且常常会遇到找不到可用的处理方法,需要自己新增方法,处理过程很复杂. 1.Dat ...
- Java日期时间API系列7-----Jdk8中java.time包中的新的日期时间API类的特点
1.不变性 新的日期/时间API中,所有的类都是不可变的,这对多线程环境有好处. 比如:LocalDateTime 2.关注点分离 新的API将人可读的日期时间和机器时间(unix timestamp ...
- Java日期时间API系列10-----Jdk8中java.time包中的新的日期时间API类的DateTimeFormatter
1.DateTimeFormatter final修饰,线程安全,用于打印和解析日期-时间对象的格式化程序. 创建DateTimeFormatter: DateTimeFormatter dateTi ...
- Java日期时间API系列1-----Jdk7及以前的日期时间类
先看一个简单的图: 主要的类有: Date类负责时间的表示,在计算机中,时间的表示是一个较大的概念,现有的系统基本都是利用从1970.1.1 00:00:00 到当前时间的毫秒数进行计时,这个时间称为 ...
随机推荐
- 轻量级SpringBoot Office文档在线预览框架
框架简介 介绍:基于开源项目KkFileView源码提取出,封装成仅用于 Office文档预览(格式转换) 功能的一个通用组件; 原理是把Word转成PDF,PPT转成PDF,Excel转成HTML; ...
- 【MySQL】主从配置
一主一从(或二从)部署: 参考博客: https://www.cnblogs.com/lelehellow/p/9633315.html 正好借着3台机器,可以做一个 1主 2从的分配 192.168 ...
- 【Mybatis-Plus】04 AR (Active Record)
AR模式,全称激活记录 具体操作更接近Hibernate一样的OOP操作方式影响数据库记录 比Hibernate操作更灵活更方便 上手: 首先User实体类需要继承Model类并泛型注入User类型 ...
- Illegal key size or default parameters 解决方案
1.背景 在做aes加密时,报错 Illegal key size or default parameters...有的jdk版本报错,有的不报错,原因在于: jdk 或jre\lib\securit ...
- OpenTiny HUICharts开源发布,带你了解一个简单、易上手的图表组件库
摘要:目前 OpenTiny HUICharts 已经成功落地在华为内部100多个产品中,持续提升了用户的可视化体验. 本文分享自华为云社区<OpenTiny HUICharts 正式开源发布, ...
- MySQL8服务无法启动,服务没有报告任何错误
MySQL8服务无法启动,服务没有报告任何错误 错误信息: 免安装版mysql-8.0.15-winx64.zip 按照教程来安装,解压,增加my.ini文件,修改文件内部的地址信息,配置环境变量pa ...
- SenseCraft 部署模型到Grove Vision AI V2图像处理模块
Grove Vision AI V2 图像处理模块开箱测评 摘要 今天教大家快速上手 Grove Vision AI V2 图像处理模块,我们将一起探讨如何利用 SenseCraft 部署 AI 模型 ...
- 代码随想录Day19
235. 二叉搜索树的最近公共祖先 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先. 百度百科中最近公共祖先的定义为:"对于有根树 T 的两个结点 p.q,最近公共祖先表示为一个 ...
- MacTeX 使用
MacTeX 是一个 TeX Live 的 macOS 定制版本.它包括: TeX Live GUI 应用程序 Ghostscript 关于 MacTeX 的介绍可以查看 MacTex 主页 安装 b ...
- BibTeX 和 BibLaTeX
BibTeX:传统的参考文献处理工具,使用 .bst 文件来定义参考文献的样式. BibLaTeX:功能更强大且更现代的工具,使用 .bbx..cbx 和 .dbx 文件来定义参考文献和引用的样式. ...