2019-11-16 获取两个日期之间的所有日期(Java)

2019-11-18  本文已影响0人  忆丶往
  /**
     *获取两个日期之间的所有日期
     *@param startTime 开始日期 yyyyMMdd
     *@param endTime 结束日期
     */
    public List<String> getDays(String startTime, String endTime) {

        // 返回的日期集合
        List<String> days = new ArrayList<String>();

        DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
        try {
            Date start = dateFormat.parse(startTime);
            Date end = dateFormat.parse(endTime);

            Calendar tempStart = Calendar.getInstance();
            tempStart.setTime(start);

            Calendar tempEnd = Calendar.getInstance();
            tempEnd.setTime(end);

            tempEnd.add(Calendar.DATE, +1);// 日期加1(包含结束)
            while (tempStart.before(tempEnd)) {
                days.add(dateFormat.format(tempStart.getTime()));
                tempStart.add(Calendar.DAY_OF_YEAR, 1);
            }

        } catch (ParseException e) {
            e.printStackTrace();
        }

        return days;
    }

Calendar转化为Data
//Calendar转化为Data
        Calendar cal = Calendar.getInstance(); //Calendar类的静态方法getInstance()可以初始化一个日历对象:
        Date date = cal.getTime();
        System.out.println(date);  
//输出结果:Sat Nov 16 17:36:57 CST 2019 (2019/11/16)
Data转化为Calendar
//Data转化为Calendar
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(new Date());
        System.out.println(calendar);
//输出结果:java.util.GregorianCalendar[time=1574042831733,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2019,MONTH=10,WEEK_OF_YEAR=47,WEEK_OF_MONTH=4,DAY_OF_MONTH=18,DAY_OF_YEAR=322,DAY_OF_WEEK=2,DAY_OF_WEEK_IN_MONTH=3,AM_PM=0,HOUR=10,HOUR_OF_DAY=10,MINUTE=7,SECOND=11,MILLISECOND=733,ZONE_OFFSET=28800000,DST_OFFSET=0]

格式化日期
//格式化日期
        Date date=new Date();
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        System.out.println(sdf.format(date));
//输出结果:2019-11-18 10:18:24
计算某一个月的天数
        Calendar time=Calendar.getInstance();
        time.clear();
        time.set(Calendar.YEAR,2019);
        time.set(Calendar.MONTH,11 - 1);//注意,Calendar对象默认一月为0(i - 1:表示第i月)
        int days = time.getActualMaximum(Calendar.DAY_OF_MONTH);//本月份的天数
        System.out.println(days);  //30
两个日期之间相差多少天
    public int getIntervalDays(String startDay, String endDay) throws ParseException {

        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        Date start = dateFormat.parse(startDay);
        Date end = dateFormat.parse(endDay);

        //确保startday在endday之前
        if (start.after(end)) {
            Date cal = start;
            start = end;
            end = cal;
        }
        //分别得到两个时间的毫秒数
        long sl = start.getTime();
        long el = end.getTime();

        long ei = el - sl;
        //根据毫秒数计算间隔天数
        return (int) (ei / (1000 * 60 * 60 * 24));
    }
上一篇 下一篇

猜你喜欢

热点阅读