java获取当前日期对应的时间范围

java日期操作类,获取当前时间的一些范围属性。
包含开始时间结束时间,开始和结束日期也可以单独来使用。

当前季度的时间范围
昨天的时间范围
前月份的时间范围
上个月的时间范围
上个季度的时间范围
当前日期上个季度的最后一天

结果实例:

当前日期:20210414
昨天的时间范围: 20210413 - 20210413
当前月份的时间范围: 20210401 - 20210430
当前季度的时间范围: 20210401 - 20210630
上个月的时间范围: 20210301 - 20210331
上个季度的时间范围: 20210101 - 20210331
当前日期上个季度的最后一天: 20210331

DateUtils.java

package DateUtils;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 *    @author    xxz
 *    @Description: 获取:当前季度的时间范围/昨天的时间范围/当前月份的时间范围/上个月的时间范围/上个季度的时间范围
 *    @Date 2021年4月13日    
 *
 */
public class DateUtils {
	
	
	/**
	 * 获取date的月份的时间范围
	 * @param date
	 * @return
	 */
	public static DateRange getMonthRange(Date date) {
		Calendar startCalendar = Calendar.getInstance();
		startCalendar.setTime(date);
		startCalendar.set(Calendar.DAY_OF_MONTH, 1);
		setMaxTime(startCalendar);
		
		Calendar endCalendar = Calendar.getInstance();
		endCalendar.setTime(date);
		endCalendar.set(Calendar.DAY_OF_MONTH, endCalendar.getActualMaximum(Calendar.DAY_OF_MONTH));
		setMaxTime(endCalendar);
		
		return new DateRange(startCalendar.getTime(), endCalendar.getTime());
	}
	
	
	/**
	 * 获取当前季度的时间范围
	 * @return current quarter
	 */
	public static DateRange getThisQuarter() {
		Calendar startCalendar = Calendar.getInstance();
		startCalendar.set(Calendar.MONTH, ((int) startCalendar.get(Calendar.MONTH) / 3) * 3);
		startCalendar.set(Calendar.DAY_OF_MONTH, 1);
		setMinTime(startCalendar);
		
		Calendar endCalendar = Calendar.getInstance();
		endCalendar.set(Calendar.MONTH, ((int) startCalendar.get(Calendar.MONTH) / 3) * 3 + 2);
		endCalendar.set(Calendar.DAY_OF_MONTH, endCalendar.getActualMaximum(Calendar.DAY_OF_MONTH));
		setMaxTime(endCalendar);
		
		return new DateRange(startCalendar.getTime(), endCalendar.getTime());
	}
	
	
	
	/**
	 * 获取昨天的时间范围
	 * @return
	 */
	public static DateRange getYesterdayRange() {
		 Calendar startCalendar = Calendar.getInstance();
		 startCalendar.add(Calendar.DAY_OF_MONTH, -1);
		 setMinTime(startCalendar);
		 
		 Calendar endCalendar = Calendar.getInstance();
		 endCalendar.add(Calendar.DAY_OF_MONTH, -1);
		 setMaxTime(endCalendar);
		 
		 return new DateRange(startCalendar.getTime(), endCalendar.getTime());
	}
	
	
	
	/**
	 * 获取当前月份的时间范围
	 * @return
	 */
	public static DateRange getThisMonth(){
		Calendar startCalendar = Calendar.getInstance();
		startCalendar.set(Calendar.DAY_OF_MONTH, 1);
		setMinTime(startCalendar);
		
		Calendar endCalendar = Calendar.getInstance();
		endCalendar.set(Calendar.DAY_OF_MONTH, endCalendar.getActualMaximum(Calendar.DAY_OF_MONTH));
		setMaxTime(endCalendar);
		
		return new DateRange(startCalendar.getTime(), endCalendar.getTime());
	}
	
	
	
	/**
	 * 获取上个月的时间范围
	 * @return
	 */
	public static DateRange getLastMonth(){
		Calendar startCalendar = Calendar.getInstance();
		startCalendar.add(Calendar.MONTH, -1);
		startCalendar.set(Calendar.DAY_OF_MONTH, 1);
		setMinTime(startCalendar);
		
		Calendar endCalendar = Calendar.getInstance();
		endCalendar.add(Calendar.MONTH, -1);
		endCalendar.set(Calendar.DAY_OF_MONTH, endCalendar.getActualMaximum(Calendar.DAY_OF_MONTH));
		setMaxTime(endCalendar);
		
		return new DateRange(startCalendar.getTime(), endCalendar.getTime());
	}
	
	
	
	/**
	 * 获取上个季度的时间范围
	 * @return
	 */
	public static DateRange getLastQuarter() {
		Calendar startCalendar = Calendar.getInstance();
		startCalendar.set(Calendar.MONTH, ((int) startCalendar.get(Calendar.MONTH) / 3 - 1) * 3);
		startCalendar.set(Calendar.DAY_OF_MONTH, 1);
		setMinTime(startCalendar);
		
		Calendar endCalendar = Calendar.getInstance();
		endCalendar.set(Calendar.MONTH, ((int) endCalendar.get(Calendar.MONTH) / 3 - 1) * 3 + 2);
		endCalendar.set(Calendar.DAY_OF_MONTH, endCalendar.getActualMaximum(Calendar.DAY_OF_MONTH));
		setMaxTime(endCalendar);
		
		return new DateRange(startCalendar.getTime(), endCalendar.getTime());
	}
	
	
	
	private static void setMinTime(Calendar calendar){
		calendar.set(Calendar.HOUR_OF_DAY, 0);
		calendar.set(Calendar.MINUTE, 0);
		calendar.set(Calendar.SECOND, 0);
		calendar.set(Calendar.MILLISECOND, 0);
	}
	
	
	
	private static void setMaxTime(Calendar calendar){
		calendar.set(Calendar.HOUR_OF_DAY, calendar.getActualMaximum(Calendar.HOUR_OF_DAY));
		calendar.set(Calendar.MINUTE, calendar.getActualMaximum(Calendar.MINUTE));
		calendar.set(Calendar.SECOND, calendar.getActualMaximum(Calendar.SECOND));
		calendar.set(Calendar.MILLISECOND, calendar.getActualMaximum(Calendar.MILLISECOND));
	}
	
	
	
	
	public final static String DEFAULT_PATTERN = "MM/dd/yyyy HH:mm:ss";
	
	
	public static String format(Date date){
        SimpleDateFormat sdf = new SimpleDateFormat(DEFAULT_PATTERN);
        return sdf.format(date);
    }
	
	public static void main(String[] args) {
		
		SimpleDateFormat DateUtilsTemp = new SimpleDateFormat("yyyyMMdd");
		String data = DateUtilsTemp.format(new Date());
		System.out.println("当前日期:"+data);
		
		DateRange yesterdayRange = getYesterdayRange();
		System.out.println("昨天的时间范围: "+DateUtilsTemp.format(yesterdayRange.getStart())+" - "+DateUtilsTemp.format(yesterdayRange.getEnd()));
		
		
		DateRange thisMonth = getThisMonth();
		System.out.println("当前月份的时间范围: "+DateUtilsTemp.format(thisMonth.getStart())+" - "+DateUtilsTemp.format(thisMonth.getEnd()));
		
		DateRange currentQuarter = getThisQuarter();
		System.out.println("当前季度的时间范围: "+DateUtilsTemp.format(currentQuarter.getStart())+" - "+DateUtilsTemp.format(currentQuarter.getEnd()));
		
		DateRange lastMonth = getLastMonth();
		System.out.println("上个月的时间范围: "+DateUtilsTemp.format(lastMonth.getStart())+" - "+DateUtilsTemp.format(lastMonth.getEnd()));
		
		
		DateRange lastQuarter = getLastQuarter();
		System.out.println("上个季度的时间范围: "+DateUtilsTemp.format(lastQuarter.getStart())+" - "+DateUtilsTemp.format(lastQuarter.getEnd()));
		
		System.out.println("当前日期上个季度的最后一天: "+DateUtilsTemp.format(lastQuarter.getEnd()));
		
	}
}


DateRange.java

package DateUtils;

import java.util.Date;

/**
 *    @author    xxz
 *    @Description: TODO(用一句话描述该文件做什么)
 *    @Date 2021年4月13日    
 *
 */
public class DateRange {
	private Date start;
	private Date end;
	
	public DateRange(Date start, Date end) {
		this.start = start;
		this.end = end;
	}
	
	public Date getStart() {
		return start;
	}
	public void setStart(Date start) {
		this.start = start;
	}
	public Date getEnd() {
		return end;
	}
	public void setEnd(Date end) {
		this.end = end;
	}
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值