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

简介: Apache commons-lang3 long milliSecondsLeftToday = 86400000 - DateUtils.getFragmentInMilliseconds(Calendar.getInstance(), Calendar.DATE);     System.currentTimeMillis() 是零时区的时间戳,所以你要加上8个小时才行。

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

 



 

相关文章
|
29天前
|
Java
【Java】如果一个集合中类型是String如何使用拉姆达表达式 进行Bigdecimal类型计算?
【Java】如果一个集合中类型是String如何使用拉姆达表达式 进行Bigdecimal类型计算?
25 0
|
1月前
|
存储 Java
Java:编写程序,计算两个数的和、差、积、商和余数。docx
Java:编写程序,计算两个数的和、差、积、商和余数。docx
|
1月前
|
算法 Java
算法:Java计算二叉树从根节点到叶子结点的最大路径和
算法:Java计算二叉树从根节点到叶子结点的最大路径和
|
1月前
|
存储 Java
Java 编程实例:相加数字、计算单词数、字符串反转、元素求和、矩形面积及奇偶判断
Java中相加两个数字可通过简单赋值实现,如`int sum = x + y;`。若要用户输入数字相加,可使用`Scanner`类读取。计算单词数,可使用`split()`方法或`StringTokenizer`类。反转字符串,可用`for`循环或`StringBuilder`的`reverse()`方法。计算数组元素总和,可遍历数组累加。矩形面积通过长度乘以宽度得出。判断奇偶性,利用模2运算或位运算检查最低位。更多内容,可关注微信公众号`Let us Coding`。
49 0
|
5月前
|
Java 云计算
阿里云国际站代理商:Java计算当前时间处于某段时间内的第几周、第几个月
@luotuoemo飞机@TG阿里云国际站代理商:Java计算当前时间处于某段时间内的第几周、第几个月,以上就是使用Java代码计算当前时间处于某段时间内的第几周和第几个月的全部内容。通过该篇文章,我们可以了解到如何使用Java的Calendar类以及日期函数来计算时间段内的周数和月数,掌握相应的计算方法和实践技巧。在开发过程中,合理运用这些方法,可以方便地获取时间相关的信息,满足业务需求,提高开发效率。希望本文能对读者在使用阿里云国际站代理商开发Java应用时计算时间段的周数和月数提供一些帮助与启示。
|
5月前
|
SQL 存储 Java
如何使用 Java 设计一个简单的成绩计算程序
如何使用 Java 设计一个简单的成绩计算程序
|
1月前
|
Java
Java计算每个月的天数
Java计算每个月的天数
|
1月前
|
机器学习/深度学习 算法 Java
Java计算阶乘递归函数的实现
Java计算阶乘递归函数的实现
|
1月前
|
Java
Java:计算两个数的最大公约数和最小公倍数
Java:计算两个数的最大公约数和最小公倍数
|
1月前
|
Java
Java代码计算两数和差积商余
Java代码计算两数和差积商余
36 0