java实现获取日期间隔天数,还有获取间隔之间的日期(单位:天)_java 取两个日期的间隔时间-程序员宅基地

技术标签: date  java  java获取两个日期之间的间隔天数  java获取时间间隔  

/**
 * 计算两个日期之间相差的天数
 */
 public int BetweenDays(String startDate,String endDate){
     startDate = startDate + " 00:00:00";
     endDate = endDate + " 00:00:00";

     // 获取日期
     Date date1 = MyDateUtil.parseDate(startDate, "yyyy-MM-dd HH:mm:ss");
     Date date2 = MyDateUtil.parseDate(endDate, "yyyy-MM-dd HH:mm:ss");

     // 获取相差的天数
     Calendar calendar = Calendar.getInstance();
     calendar.setTime(date1);
     long timeInMillis1 = calendar.getTimeInMillis();
     calendar.setTime(date2);
     long timeInMillis2 = calendar.getTimeInMillis();
     long betweenDays =  (timeInMillis2 - timeInMillis1) / (1000L*3600L*24L);

     return (int) betweenDays;
 }
/**
 * 获取两个日期之间的所有日期(这个方法中用到了上面BetweenDays方法)
 * @param startDate
 * @param endDate
 * @return
 */
public ArrayList<String> handleDays(String startDate,String endDate){
    ArrayList<String> datelist = new ArrayList<>();
    endDate = endDate + " 00:00:00";
    Date date = MyDateUtil.parseDate(endDate, "yyyy-MM-dd HH:mm:ss");
//用到上面的方法,这里的是通过BetweenDays方法获取输入的两个日期来获取日期之间相差的天数
//这个可以根据自己需要来写,比如想获取一周的就直接写int days =7;
    int days = this.BetweenDays(startDate,endDate);

    Calendar calendar = Calendar.getInstance();
    for(int i=0;i<=days;i++) {
//这里的date是我输入的两个时间间隔的结束时间;如果你想获取当前时间的前一周的话,你就可以把date换成Date date = new Date(); 
        calendar.setTime(date);
        calendar.add(Calendar.DATE, -i);
        Date d = calendar.getTime();
        String day = MyDateUtil.dateFormate(d, "yyyy-MM-dd HH:mm:ss").substring(0,10);
        datelist.add(day);
    }
    return datelist;
}

 

//日期格式化的工具类

public class MyDateUtil {
    /**
     * 将指定的日期字符串转换成日期
     * @param dateStr 日期字符串
     * @param pattern 格式
     * @return 日期对象
     */
    public static Date parseDate(String dateStr, String pattern)
    {
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        Date date;
        try {
            date = sdf.parse(dateStr);
        } catch (ParseException e) {
            throw  new RuntimeException("日期转化错误");
        }

        return date;
    }

    /**
     * 将指定的日期格式化成指定的日期字符串
     * @param date 日期对象
     * @param pattern 格式
     * @return 格式化后的日期字符串
     */
    public static String dateFormate(Date date, String pattern)
    {
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        String dateStr;
        if(date == null)
        {
            return "";
        }
        dateStr = sdf.format(date);
        return dateStr;
    }

    /**
     * 查询指定日期前后指定的天数
     * @param date 日期对象
     * @param days 天数
     * @return 日期对象
     */
    public static Date incr(Date date, int days)
    {
        if (date == null){
            return null;
        }

        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.DAY_OF_MONTH, days);
        return calendar.getTime();
    }

    /**
     * 将LocalDate日期转化成Date
     * @param localDate LocalDate对象
     * @return Date对象
     */
    public static Date localDateToDate(LocalDate localDate)
    {
        if (localDate == null)
        {
            return null;
        }
        ZoneId zoneId = ZoneId.systemDefault();
        ZonedDateTime zonedDateTime = localDate.atStartOfDay(zoneId);
        Date date = Date.from(zonedDateTime.toInstant());

        return date;
    }

    /**
     * 将Date转成LocalDate对象
     * @param date Date对象
     * @return LocalDate对象
     */
    public static LocalDate dateToLocalDate(Date date)
    {
        if (date == null)
        {
            return null;
        }
        ZoneId zoneId = ZoneId.systemDefault();
        Instant instant = date.toInstant();
        LocalDate localDate = instant.atZone(zoneId).toLocalDate();

        return localDate;
    }
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/t_to_d/article/details/103642387

智能推荐

Android Studio 教你在debug调试模式下使用正式签名_android debug使用release的签名-程序员宅基地

文章浏览阅读9.1k次,点赞4次,收藏4次。这个问题是我在配置QQ第三方登陆时遇到的,QQ第三方登陆如果上传正式发布包到腾讯应用宝,也就是正式版的签名,测试三方登陆时也只能用正式签名测试,对于开发者来说,实在太痛苦了,因为开发者做测试都是运行起来都是在debug模式下,签名也是debug模式下的签名。腾讯开放平台有一个应用调试者QQ号测试,不知道是不是填写了开发者的QQ号之后就可以用正式版的签名做第三方登陆测试了,每次我点击添加,结果就这样_android debug使用release的签名

Linux内存管理(1) - bootmem分配器_linux bootmem-程序员宅基地

文章浏览阅读1.9k次,点赞2次,收藏12次。内核中分配内存基本都基于伙伴系统,但是在内核启动之初,伙伴系统尚未建立,这时需要一个临时的内存分配器负责提供内核早期的内存需求,例如存放内核的代码段和数据段,以及将内存进行简单的管理供后续伙伴系统使用,这就是bootmem分配器。本文基于Linux 2.6.31的内核源码对bootmem分配器的工作过程进行分析。_linux bootmem

jetson nano 部署yolov5s_nvzramconfig.sh文件-程序员宅基地

文章浏览阅读1.6k次。jetson nano 部署yolov5s一、配置系统(列出来了步骤,详细内容网上很多)下载系统SD卡格式化把下载的系统烧录进SD卡插卡开机,进行一些初始化设计我的系统是ubuntu 18.4 cuda 10.2 python是nano自带的3.6二、使用官网的镜像,没有更换源,配置环境1.更新系统和包sudo apt-get updatesudo apt-get upgrade或sudo apt-get full-upgrade可能报错:nvidia-l4t-bootloa_nvzramconfig.sh文件

sun.misc.BASE64Encoder在eclipse中找不到-程序员宅基地

文章浏览阅读275次。sun.misc.BASE64Encoder/BASE64Decoder类。这人个类是sun公司的内部方法,并没有在java api中公开过,不属于JDK标准库范畴,但在JDK中包含了该类,可以直接使用。但是在eclipse和MyEclipse中直接使用,却找不到该类。 可以使用如下方法:选中项目-》右键properties--》java bulid path----》libraries..._sun.misc.base64encoder eclipse 找不到

【踩坑记录】使用IDEA部署tomcat遇到的问题_idea2023启动tomcat9一直开在manager项目-程序员宅基地

文章浏览阅读2.5k次。之前用eclipse写web项目,最近转到IDEA开发,在创建IDEA上第一个Maven的web项目时就遇到了不小的麻烦,在这里记录一下。1、关于tomcat无法启动的问题在创建好一个web项目想要把它运行起来的时候,报了如下错误,我使用的是tomcat7网上找遍解决办法未果,于是更换了tomcat9在官网下载了tomcat9的压缩包,解压后将其添加到IDEA中:打开Run/Deb..._idea2023启动tomcat9一直开在manager项目

Web实现:伪类事件伪类鼠标悬停效果_css button 伪类 鼠标离开后样式不丢失-程序员宅基地

文章浏览阅读1.7k次。伪类实现的鼠标悬停效果,直接上代码:HTML部分:<!DOCTYPE html><html><head><!--系统内置 start--><script type="text/javascript" src="//qgt-style.oss-cn-hangzhou.aliyuncs.com/commonJSCSS/console.js"></script><!--系统内置 end--> <meta_css button 伪类 鼠标离开后样式不丢失

随便推点

csdn原力的一件小事_csdn发布了文章 原力值没增加-程序员宅基地

文章浏览阅读460次。我来csdn已经好几年了,最初只是查查东西,毕竟那时候还没转编程。 几个月前,开始尝试写点东西,回答点问题,也坚持每天打卡,毕竟是上班族,不是长时间留在csdn。最终获得了3000+粉丝,也有点小小的收益。 每天签到的同时,有少量的money,原力是正的,还能加倍。不过前阵子想弄bdd到微信头像,结果审核没通过,扣了近200分,我能理解。 不过今天也是负的,就很奇怪,可能我没读懂xsdn增长规则。最近一段时间,工作比较忙,没时间逛csdn,所以没写文章,也没答题,所以最近原力增..._csdn发布了文章 原力值没增加

保饭碗的10项技术之杂谈-程序员宅基地

文章浏览阅读1.8k次。 可以说是看了这篇文章《保证你现在和未来不失业的十种关键技术》[作者/iamsohappy],才注意到Regular Expressions原来是这么的重要。我这里没有加该文章的超级链接,因为到处都有,我也找不到其原始出处。当一篇文章被转载时,注明原始来源应该成为我们的习惯,既表示对作者的尊重,也是对自己的尊重。这里是一段作为我以后所有咚咚的版权声明*公告。1、十种关键技术

(一)Linux下percona-toolkit工具包的安装和使用_linux opt/rpatoolkit-程序员宅基地

文章浏览阅读602次。一.检查和安装与Perl相关的模块PT工具是使用Perl语言编写和执行的,所以需要系统中有Perl环境。依赖包检查命令为:# rpm -qa perl-DBI perl-DBD-MySQL perl-Time-HiRes perl-IO-Socket-SSL如果有依赖包缺少,可以使用下面的命令安装:# yum install perl-DBI# yum install perl-DBD-MySQL# yum install perl-Time-HiRes# yum in._linux opt/rpatoolkit

linux shell 检查端口开放_nc -z -w5-程序员宅基地

文章浏览阅读2.9k次。法一:使用ncnc -z <host> <port>使用nc -z +IP或域名+端口检查目标主机端口是否开启,返回0则表示开启,返回1则表示未开启。当然,为了更快的检测目标端口的状态,可以使用-w参数指定超时时间。(下方示例设置的超时时间为5秒)nc -z -v -w5 <host> <port>$ nc -v -z -w ..._nc -z -w5

(Java)Math里面的ceil.floor和round的方法区别;_java round函数和ceil函数的区别-程序员宅基地

文章浏览阅读272次。(Java)Math里面的ceil.floor和round的方法区别: Java中.Math里面的ceil,floor,和round的区别在于:ceil:中文的意思是天花板,意思就是向上取值,就是数学里面的进一法;返回的类型是:双精度浮点型double;例如:Math.ceil(11.0000001);其结果等于12.0;对于负数来说可以这样理解:取整:Math.ceil(-11.9999..._java round函数和ceil函数的区别

HTML常用显示内容标签_主要内容标签-程序员宅基地

文章浏览阅读4.7k次,点赞2次,收藏8次。1 什么是 HTML? 需求:(生活中遇到问题) 随着技术的发展,信息量的增大网页的数据信息没有办法完美的、漂亮的展现到用户的面前。 意义:(作用): HTML是一种专门对网页信息进行规范化展示的语言。把网页的信息格式化展现的语言 HTML(Hyper Text Markup Language):超文本标记语言超文本:文本信息 、图片、声音、视频、超链接等 标记:标签的..._主要内容标签

推荐文章

热门文章

相关标签