您的位置:首页 > 其它

根据Long值求与当前系统时间的时间差

2016-06-20 11:50 411 查看
先上代码:

public class TimeUtil {
public static String getTime(long time) {

String result = "";

//millis表示当前系统时间,单位是:毫秒
long millis = System.currentTimeMillis();

int day = (int) (millis / 1000 / 3600 / 24 - time / 3600 / 24);

switch (day) {
case 0:
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
result = sdf.format(time * 1000);
break;
case 1:
SimpleDateFormat sdf2 = new SimpleDateFormat("HH:mm");
result = "昨天 " + sdf2.format(time * 1000);
break;
case 2:
SimpleDateFormat sdf3 = new SimpleDateFormat("HH:mm");
result = "前天 " + sdf3.format(time * 1000);
break;
default:
SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy/MM/dd HH:mm");
result = sdf4.format(time * 1000);
break;
}

return result;
}
}



在一开始,我认为求两个Long值之间的时间差是很容易。

也没想那么多,之前计算两个时间点之间天数的公式是这么写的:

int day = (int) ((millis/1000 - time)/3600/24);
但是这么写就会出现一个问题:

它会按照millis和time之间相隔的小时来判断输出!

例如:

time的时间是2016年6月19日17时00分00秒。

millis时间是2016年6月20日16时00分00秒。

那么将会返回"17:00",millis和time之间相隔了23个小时。

但是事实上需求希望返回的是"昨天17:00"是按照自然天来判断输出的。

所以计算两个时间点直接的公式应该为:

int day = (int) (millis/1000/3600/24 - time/3600/24);
这么写,就能按照自然天来判断了。

例如:

time的时间是2016年6月19日23时59分59秒。

millis时间是2016年6月20日00时00分01秒。
millis和time之间相隔了2秒。
返回的是"昨天23:59"了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: