首页 > 代码库 > java的系统时间,怎么计算从现在到凌晨还剩下多少时间?
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
java的系统时间,怎么计算从现在到凌晨还剩下多少时间?
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。