文档章节

java 计算间隔的天数

o
 osc_x4h57ch8
发布于 2018/04/24 11:03
字数 272
阅读 0
收藏 0

精选30+云产品,助力企业轻松上云!>>>

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

// 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);
}

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

babe从入门到精通

前言 前面我们写了几篇很长的文章去介绍babel源码、preset-env、runtime, babel源码解析一 babel源码解析之(@babel/preset-env) babel源码解析之(@babel/plugin-transform-runtime) 在b...

osc_tc7vil4d
34分钟前
9
0
grpc+gin+proto,使用http调用rpc接口

接下来重点讲如何创建并通过http 使用rpc接口 。 proto代码 syntax = "proto3";package proto.web.web.proto;option go_package = "pb;pb";// 进入message ComeIn {string name = 1;......

osc_bskubcvl
35分钟前
15
0
BSEC 块购链 开盘前三天注册实名就送两台矿机 实体公司可考察

2020年6月28日19点38分BSEC正式开盘! 块购链发行总量:8000万枚 免费挖 块购链是什么?块购链是一个基于区块链技术,致力于为淘宝、天猫、京东、唯品会等购物平台提供安全稳定的优惠券发放技...

osc_cseo1dn1
37分钟前
5
0
leetcode面试题 17.10(主要元素)--Java语言实现

求: 数组中占比超过一半的元素称之为主要元素。给定一个整数数组,找到它的主要元素。若没有,返回-1。 示例 1: 输入:[1,2,5,9,5,9,5,5,5] 输出:5 示例 2: 输入:[3,2] 输出:-1 示例 ...

拓拔北海
37分钟前
27
0
Go 方法的基本概念及使用

方法 基本介绍 在某些情况下,我们要需要声明(定义)方法。比如 Person 结构体:除了有一些字段外( 年龄,姓名..),Person 结构体还有一些行为比如:可以说话、跑步..,通过学习,还可以做算术题。...

osc_7lh4ey2u
38分钟前
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部