Utils-获取日期范围字符串工具类

  • DateUtils.java
private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

	/**
	 * 获取过去任意天数的日期,从昨天开始
	 * 
	 * @param past
	 * @return
	 */
	public static String getPastDate(int past) {
		Calendar calendar = Calendar.getInstance();
		calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) - past);
		Date today = calendar.getTime();
		String result = sdf.format(today);
		return result;
	}

	/**
	 * 获取上月的第一天日期
	 */
	public static String getLastMonthMinDay() {
		Calendar calendar = Calendar.getInstance();
		calendar.add(Calendar.MONTH, -1);
		calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
		Date date = calendar.getTime();
		return sdf.format(date);
	}

	/**
	 * 获取上月的最后一天日期
	 */
	public static String getLastMonthMaxDay() {
		Calendar calendar = Calendar.getInstance();
		calendar.add(Calendar.MONTH, -1);
		calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
		Date date = calendar.getTime();
		return sdf.format(date);
	}
	/**
	 * 获取上个季度的第一天
	 * 
	 * @return
	 */
	public static String getLastQuaterMinDay() {
		Calendar calendar = Calendar.getInstance();
		calendar.set(Calendar.MONTH, ((int) calendar.get(Calendar.MONTH) / 3 - 1) * 3);
		calendar.set(Calendar.DAY_OF_MONTH, 1);
		return sdf.format(calendar.getTime());
	}
	
	/**
	 * 获取上个季度的最后一天
	 * 
	 * @return
	 */
	public static String getLastQuaterMaxDay() {
		Calendar calendar = Calendar.getInstance();
		calendar.set(Calendar.MONTH, ((int) calendar.get(Calendar.MONTH) / 3 - 1) * 3 + 2);
		calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
		return sdf.format(calendar.getTime());
	}

	/**
	 * 获取上月每月的日期
	 * 
	 * @return
	 */
	public static List<String> getDayListOfMonth() {
		List<String> list = new ArrayList<String>();
		Calendar aCalendar = Calendar.getInstance(Locale.CHINA);
		// 设置日历为上月
		aCalendar.add(Calendar.MONTH, -1);
		int year = aCalendar.get(Calendar.YEAR);// 年份
		int month = aCalendar.get(Calendar.MONTH) + 1;// 月份
		int day = aCalendar.getActualMaximum(Calendar.DATE);
		for (int i = 1; i <= day; i++) {
			String aDate = String.valueOf(year) + "-" + month + "-" + i;
			list.add(aDate);
		}
		return list;
	}
/**
	 * 根据日期范围获取所有日期
	 * 
	 * @param beginDate
	 * @param endDate
	 */
	public static List<String> getRangeDate(String beginDate, String endDate) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		Date dBegin = new Date();
		Date dEnd = new Date();
		try {
			dBegin = sdf.parse(beginDate);
			dEnd = sdf.parse(endDate);
		} catch (Exception e) {
			e.printStackTrace();
		}
		List<String> lDate = new ArrayList<String>();
		lDate.add(beginDate);
		Calendar calBegin = Calendar.getInstance();
		// 使用给定的 Date 设置此 Calendar 的时间
		calBegin.setTime(dBegin);
		Calendar calEnd = Calendar.getInstance();
		// 使用给定的 Date 设置此 Calendar 的时间
		calEnd.setTime(dEnd);
		// 测试此日期是否在指定日期之后
		while (dEnd.after(calBegin.getTime())) {
			// 根据日历的规则,为给定的日历字段添加或减去指定的时间量
			calBegin.add(Calendar.DAY_OF_MONTH, 1);
			lDate.add(sdf.format(calBegin.getTime()));
		}
		return lDate;
	}

	/**
	 * 获取去年的年月日期
	 * 
	 * @param year
	 * @return
	 */
	public static List<String> getLastYear(String year) {

		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");
		Date date = new Date();
		// 存放日期的列表
		List<String> list = new ArrayList<String>();
		try {
			date = format.parse(year + "-1");
		} catch (Exception e) {
			e.printStackTrace();
		}
		Calendar c = Calendar.getInstance();
		c.setTime(date);
		for (int i = 12; i > 0; i--) {
			c.add(Calendar.MONTH, -1);
			list.add(format.format(c.getTime()));
		}
		// 颠倒list中的顺序
		Collections.reverse(list);
		return list;
	}
	
	/**获取去年今日的日期
	 * @return
	 */
	public static String getLastYearToday() {
		Calendar c = Calendar.getInstance();
		c.setTime(new Date());
        c.add(Calendar.YEAR, -1);
        return sdf.format(c.getTime());
	}
	/**
	 * 获取本周时间戳
	 * 
	 * @return
	 */
	public static List<String> getThisWeekDateLine() {
		LocalDate today = LocalDate.now();
		LocalDate monday = today.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
		LocalDate sunday = today.with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY));
		return getRangeDate(monday.toString(), sunday.toString());
	}
	
	/**
	 * 获取本周开始结束日期
	 * 
	 * @param today
	 * @param isFirst
	 * @return
	 */
	public static String getStartOrEndDayOfWeek(LocalDate today, Boolean isFirst) {
		LocalDate resDate = LocalDate.now();
		if (today == null) {
			today = resDate;
		}
		DayOfWeek week = today.getDayOfWeek();
		int value = week.getValue();
		if (isFirst) {
			resDate = today.minusDays(value - 1);
		} else {
			resDate = today.plusDays(7 - value);
		}
		return resDate.toString();
	}

	/**
	 * 本月开始或结束日期
	 * 
	 * @param today
	 * @param isFirst
	 * @return
	 */
	public static String getStartOrEndDayOfMonth(LocalDate today, Boolean isFirst) {
		LocalDate resDate = LocalDate.now();
		if (today == null) {
			today = resDate;
		}
		Month month = today.getMonth();
		int length = month.length(today.isLeapYear());
		if (isFirst) {
			resDate = LocalDate.of(today.getYear(), month, 1);
		} else {
			resDate = LocalDate.of(today.getYear(), month, length);
		}
		return resDate.toString();
	}

	/**
	 * 本季度开始结束日期
	 * 
	 * @param today
	 * @param isFirst
	 * @return
	 */
	public static String getStartOrEndDayOfQuarter(LocalDate today, Boolean isFirst) {
		LocalDate resDate = LocalDate.now();
		if (today == null) {
			today = resDate;
		}
		Month month = today.getMonth();
		Month firstMonthOfQuarter = month.firstMonthOfQuarter();
		Month endMonthOfQuarter = Month.of(firstMonthOfQuarter.getValue() + 2);
		if (isFirst) {
			resDate = LocalDate.of(today.getYear(), firstMonthOfQuarter, 1);
		} else {
			resDate = LocalDate.of(today.getYear(), endMonthOfQuarter, endMonthOfQuarter.length(today.isLeapYear()));
		}
		return resDate.toString();
	}

	/**
	 * 今年开始结束日期
	 * 
	 * @param today
	 * @param isFirst
	 * @return
	 */
	public static String getStartOrEndDayOfYear(LocalDate today, Boolean isFirst) {
		LocalDate resDate = LocalDate.now();
		if (today == null) {
			today = resDate;
		}
		if (isFirst) {
			resDate = LocalDate.of(today.getYear(), Month.JANUARY, 1);
		} else {
			resDate = LocalDate.of(today.getYear(), Month.DECEMBER, Month.DECEMBER.length(today.isLeapYear()));
		}
		return resDate.toString();
	}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值