java的系统时间,怎么计算从现在到凌晨还剩下多少时间?

Apache commons-lang3

long milliSecondsLeftToday = 86400000 -
    DateUtils.getFragmentInMilliseconds(Calendar.getInstance(), Calendar.DATE);

 

 

System.currentTimeMillis() 是零时区的时间戳,所以你要加上8个小时才行。
最基础的写法:

public class Main {
    public static void main(String[] args) {
        long hour = 60 * 60 * 1000;
        long time = System.currentTimeMillis();
        System.out.println(time);
        time += 8 * hour;
        System.out.println(time);
        time %= 24 * hour;
        System.out.printf("%02d:%02d\n", time / hour, time % hour / 60000);
        time = 24 * hour - time;
        System.out.printf("%02d:%02d\n", time / hour, time % hour / 60000);
    }
}

在当前时区有夏令时的情况下,另外一个用System.currentTimeMillis() 的答案是不能正确处理的,比如15年美国夏令时从3月8号凌晨2点开始,如果现在时间是3月8号1点,那种方式计算出来的就是错误的,而Calendar API可以正确处理,虽然很难用。

Calendar c = Calendar.getInstance();
long now = c.getTimeInMillis();

c.add(Calendar.DAY_OF_MONTH, 1);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);

long millis = c.getTimeInMillis() - now;

 

 

Java8中的写法

LocalTime midnight = LocalTime.MIDNIGHT;
LocalDate today = LocalDate.now();
LocalDateTime todayMidnight = LocalDateTime.of(today, midnight);
LocalDateTime tomorrowMidnight = todayMidnight.plusDays(1);
System.out.println(TimeUnit.NANOSECONDS.toSeconds(Duration.between(LocalDateTime.now(), tomorrowMidnight).toNanos()));

 

https://www.zhihu.com/question/28475461

 

 

时间: 2024-12-21 20:15:28

java的系统时间,怎么计算从现在到凌晨还剩下多少时间?的相关文章

JAVA 获取系统当前时间实例代码_java

本文章向大家讲解java中时间的获取和格式化,  一. 获取当前系统时间和日期并格式化输出: import java.util.Date; import java.text.SimpleDateFormat; public class NowString { public static void main(String[] args) { SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式

大家有没有遇到这样的问题啊 我的java应用在EC2上运行 java获取系统时间插入数据库的时候,总是显示时间是null的?

问题描述 大家有没有遇到这样的问题啊我的java应用在EC2上运行java获取系统时间插入数据库的时候,总是显示时间是null的?

Java服务化系统线上应急和技术攻关,你必须掌握的Linux命令

上一篇文章<Java服务化系统线上应急和技术攻关,你必须拥有的那些应用层脚本和Java虚拟机命令>介绍了笔者在互联网公司里线上应急和技术攻关过程中积累的应用层脚本和Java虚拟机命令,这些脚本和命令在发现问题和定位问题的过程中起到关键作用,然而,经常会遇到一些深层次的问题,仅仅通过应用层和JVM虚拟机层的信息无法定位问题和解决问题,这时需要深入研究系统级的各种参数和信息,才能确定问题的根源原因,例如:网络超时.机器负载过高.JVM OOM.JVM和内核Bug等,这篇文章介绍那些重要的Linux

Java 模块化系统初探

Java 模块化系统自提出以来经历了很长的时间,直到 2014 年晚些时候才最终以 JSR(JSR-376) 定稿,而且这个部分有可能在 Java 9 中出现.但是一直以来都没有可以使用的原型.9 月 11 日,OpenJDK 发布的早期构建版本终于包含了 Jigsaw 项目. 昨天,我和同事 Paul Bakker 在 JavaZone 上对于 Java 模块化系统进行了讨论.整个讨论都建立在JSR-376 需求文档以及身边一些珍贵的信息上.在年初提出举行这个报告的时候,我们曾深信不疑地认为在

求助:java读取系统日历后根据第几周星期几来判断日期的方法

问题描述 我做的是教师听课安排表系统,所以第几周是按开学后的时间来计算的,比如2011年2月28日开学,从2月28日到3月6日为第一周.假设我要算第五周星期一是几月几号.

java书店系统毕业设计 总体设计(1)_java

java书店系统项目功能需求: 1.能进行操作用户的注册,修改基本信息,删除和查询. 2.能对图书的基本信息进行增加.删除.修改和查询操作. 3.能填写进货单,一张进货单带有多条具体的进货信息,进货的书籍必须是图书管理里面已经有的:进货的同时修改库存对应书籍的存货量. 4.能填写销售单,一张销售单带有多条具体的销售信息,销售的书籍必须是图书管理里面已经有的,而且销售的数量不能超过当前库存的数量:销售的同时修改库存对应书籍的存货量. 5.可以查看库存的明细,可以按照条件进行查找具体的图书的库存值.

技术-java编程关于工资的计算,怎么完成

问题描述 java编程关于工资的计算,怎么完成 这段代码的 管理.销售.技术.行政这四个的薪酬的算法的方法怎么写?????????? 求大神指导~~~~~~~0.0 package salary; /** 薪酬标准 * */ public class SalaryStandard { /**员工职位*/ private String position; /**管理的工资*/ private double ManagedPayroll; /**销售的工资*/ private double Sale

Java IO系统总结

1 Java IO版本 Java库的IO分为输入/输出两部分. 早期的Java 1.0版本的输入系统是InputStream及其子类,输出系统是OutputStream及其子类. 后来的Java 1.1版本对IO系统进行了重新设计.输入系统是Reader及其子类,输出系统是Writer及其子类. Java1.1之所以要重新设计,主要是为了添加国际化支持(即添加了对16位Unicode码的支持).具体表现为Java 1.0的IO系统是字节流,而Java 1.1的IO系统是字符流. 字节流,就是数据

前端框架-我要做一个Java演示系统,用哪些前台技术比较好?

问题描述 我要做一个Java演示系统,用哪些前台技术比较好? 我正在做一个大数据信贷评估的系统,用了一些机器学习的算法,在单机.Hadoop和Spark上都实现了,现在想做一个美观一些的演示系统,我想用Tomcat做一个Web应用,后台提供Restful服务,用JSON格式传递数据,我以前用过Html.CSS.Javascript和JQuery,这些年又出现了很多新的库/框架,现在的界面还不复杂,请问像我这样的情况UI用哪些技术实现比较好呢? 还有我想显示一些机器学习的处理结果,有什么前端框架可