1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > java 计算间隔天数 java 计算间隔的天数

java 计算间隔天数 java 计算间隔的天数

时间:2021-03-02 00:51:46

相关推荐

java 计算间隔天数 java 计算间隔的天数

首先给出一个错误的实现:

// time1, time2 分别是 UTC 毫秒间隔

public static boolean getDayInterval(long time1, long time2) {

long base = 24*3600*1000L;

long day1 = time1/base + 1;

long day2 = time2/base + 1;

return (day1 - day2);

}

上面的代码之所以错误,因为涉及到时区了,中国大陆的时区是 UTC + 8。

涉及到时区操作,使用 Calendar 类:

public static boolean isSameDay(long time1, long time2) {

Calendar calendar1 = Calendar.getInstance();

calendar1.setTimeInMillis(time1);

Calendar calendar2 = Calendar.getInstance();

calendar1.setTimeInMillis(time2);

return calendar1.get(Calendar.DAY_OF_MONTH) == calendar2.get(Calendar.DAY_OF_MONTH);

}

上面的代码可以判断两个时间,在本地时区中是不是同一天,但是怎样计算天数间隔呢?我们需要在 UTC 时间的基础上加上那 8 个小时,得到本地时区的毫秒数,然后再计算间隔天数,正确代码如下:

public static long getDayInterval(long time1, long time2) {

// 获得当前时区

TimeZone tz = TimeZone.getDefault();

// UTC毫秒加上这个偏移值,得到本地时区的时间

long delta = tz.getRawOffset();

long base = 24*3600*1000L;

long day1 = (time1+delta)/base + 1L;

long day2 = (time2+delta)/base + 1L;

System.out.println(new Date(time1));

System.out.println(new Date(time2));

System.out.println(day1);

System.out.println(day2);

return (day1-day2);

}

来源:/allenwas3/p/8926895.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。