JAVA时间类:日月天时分秒的加减、获取一段时间的每一天,每一个月,每一年

    技术2022-07-20  154

    1、指定时间的加减

    /** * @param date 一个指定的时间(date类型) * @param interval 指定为什么日期进行加或减 y年M月d日h时m分s秒 任意指定一个 * @param number 正数为加 负数为减 * @return 功能:日期加减 获得指定时间前后时间 */ public static Date dateAdd(Date date,String interval,int number){ Calendar cal = Calendar.getInstance(); cal.setTime(date); if("y".equals(interval)){ cal.add(Calendar.YEAR, number); }else if("M".equals(interval)){ cal.add(Calendar.MONTH, number); }else if("d".equals(interval)){ cal.add(Calendar.DATE, number); }else if("h".equals(interval)||"H".equals(interval)){ cal.add(Calendar.HOUR, number); }else if("m".equals(interval)){ cal.add(Calendar.MINUTE, number); }else if("s".equals(interval)){ cal.add(Calendar.SECOND, number); }else { return null; } return cal.getTime(); } 例子:获取当前时间前5天的日子 dateAdd(new Date(),"d",-5);

    获取某一段时间的每一天、月、年

    /** * 获取某个时间段内所有年份 * @param begin 开始时间 yyyy-MM-dd HH:mm:ss * @param end 结束时间 yyyy-MM-dd HH:mm:ss * @return * @throws ParseException */ public static List<String> getDayBetweenDates(String begin, String end) throws ParseException { SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd"); Date dBegin = sd.parse(begin); Date dEnd = sd.parse(end); List<String> lDate = new ArrayList<String>(); lDate.add(sd.format(dBegin)); Calendar calBegin = Calendar.getInstance(); // 使用给定的 Date 设置此 Calendar 的时间 calBegin.setTime(dBegin); Calendar calEnd = Calendar.getInstance(); // 使用给定的 Date 设置此 Calendar 的时间 calEnd.setTime(dEnd); // 测试此日期是否在指定日期之后 while (dEnd.after(calBegin.getTime())) { // 根据日历的规则,为给定的日历字段添加或减去指定的时间量 //注意:如获取时段所有年 下方括号内为Calendar.YEAR // 如获取时段所有月 下方括号内为Calendar.MONTH // 如获取时段所有日 下方括号内为Calendar.DATE // 想改动可以自行改动 calBegin.add(Calendar.YEAR, 1); lDate.add(sd.format(calBegin.getTime())); } return lDate; } public static void main(String[] args) throws ParseException { List<String> dayBetweenDates = getDayBetweenDates("2015-04-10 00:00:00", "2020-04-13 00:00:00"); System.out.println(dayBetweenDates); }
    Processed: 0.008, SQL: 9