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

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);
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值