2 luo 1210 Luo_1210 于 2014.11.23 14:57 提问

Java计算现在时刻距离今天0时的时间差

在Java中获取一个当前时间毫秒值,比如现在1416725832762-->2014-11-23 14:57:12,实际时间距离北京时间今天0点已经过去将近15个小时,如果直接将这个数对86400000(24个小时的毫秒值)取余,得到的余数换算出来大概只有7个小时,我知道原因是这个时间是标准时间,正好于北京时间有8个小时的时差。
这个问题要如何解决呢?我现在用的方法是直接加上8个小时对应的毫秒值再取余,不知道有没有更好的方法呢?

3个回答

xuzuning
xuzuning   Ds   Rxr 2014.11.23 15:38

时间是以格林威治时间(GMT)为基准的

eagleyan
eagleyan 你在混淆timezone和clock的概念。人看时间的时候是基于timezone的。不同timezone的人在相同时间看的时间不一致,除非你在计算不同timezone的时间差,你才需要统一一个timezone比如GMT,而clock时间是机器时间,和timezone无关
大约 3 年之前 回复
oh_Maxy
oh_Maxy   Rxr 2014.11.24 10:27

一般取余,是针对10、100、1000这样1开头后面n个零的十进制数说的(当然,也可以对8进制、16进制等取余),你这个86400000取余就感觉不伦不类了。。你可以如下操作:
DateFormat df = new SimpleDateFormat("yyy-MM-dd");
Date d = df.parse("2014-11-23");
long now = System.currentTimeMillis();
long time = now-d.getTime();//当前时间离当天0点的毫秒数
或者说我没理解你的意思?

eagleyan
eagleyan   Rxr 2014.12.01 05:03

Duration.between(LocalDateTime.of(LocalDate.now(), LocalTime.MIN), LocalDateTime.now()).toHours() + 1
JDK 8以后支持

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!