java 计算两个日期时间差

java 同时被 3 个专栏收录
11 篇文章 0 订阅
12 篇文章 1 订阅
6 篇文章 0 订阅

计算两个日期之间的天数:

  public static void main(String[] args) throws ParseException {
        String startTime = "2019-11-30";
        String endTime = "2019-12-12";
        Calendar startCal = Calendar.getInstance();
        Calendar endCal = Calendar.getInstance();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date startDate =  sdf.parse(startTime);
        Date endDate = sdf.parse(endTime);
        startCal.setTime(startDate);
        endCal.setTime(endDate);
        List<String> list = new ArrayList<>();
        //得到两个日期相差的天数   还可通过去除后面的数 求得相差的小时数,分钟数,秒   等等
         int days = ((int)(endCal.getTime().getTime()/1000)-(int)(startCal.getTime().getTime()/1000))/3600/24;   
         for(int i = 0;i<=days;i++){
             list.add(sdf.format(startCal.getTime()));
             startCal.add(Calendar.DAY_OF_MONTH, 1);
         } 
         System.out.println(days);
         System.out.println(list);
    }
/**
* startTime  起始日期
* endTime   截止日期
* dateType  日期类型 HOUR/DAY/MONTH/YEAR    
*/
public Integer dateTimeNums(String startTime,String endTime,String dateType) throws ParseException{
        String fmtStr = null;
        int timeNum = 3600 * 24;
        switch(dateType){
            case "HOUR" : 
                fmtStr = "yyyy-MM-dd HH"; 
                timeNum = 3600;
                break;
            case "DAY" :
                fmtStr = "yyyy-MM-dd";
                timeNum = 3600 * 24 ;
                break;
            case "MONTH" :
                fmtStr = "yyyy-MM";
                timeNum = 3600 * 24 * 30;
                break;
            case "YEAR" :
                fmtStr = "yyyy";
                timeNum = 3600 * 24 * 365 ;
                break;
            default :
                fmtStr = "yyyy-MM-dd";
                break;
        } 
        
        Calendar startCal = Calendar.getInstance();
        Calendar endCal = Calendar.getInstance();
        SimpleDateFormat sdf = new SimpleDateFormat(fmtStr);//此处修改日期格式
        Date startDate =  sdf.parse(startTime);
        Date endDate = sdf.parse(endTime);
        startCal.setTime(startDate);
        endCal.setTime(endDate);
        startCal.compareTo(endCal);
      //得到两个日期相差的天数   
        int nums = ((int)(endCal.getTime().getTime()/1000)-(int)(startCal.getTime().getTime()/1000))/timeNum;//此处修改日期单位   
        return nums;
    }

 

 

  • 4
    点赞
  • 0
    评论
  • 9
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

参与评论 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:游动-白 设计师:我叫白小胖 返回首页

打赏作者

Beautiful菜园子

您的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值