Calendar工具类

2019-05-31 1514 星期五

Calendar工具类

 1.获取指定年月的第一天和最后一天
 2.指定多少小时之前或者之后的时间
 3.指定多少分钟之前或者之后的时间

注意点notic:
Calendar类当你set的时候,并不会立即生效,只有等你get的时候才会生效
实例化Calendar之后,执行clear方法,清除Calendar中的缓存,
验证方式写个for,执行多次,出现日期错误,不符合实际要求的日期

/**
	 * 得到系统年
	 * @return
	 * @author enAn 2019-05-31 星期五
	 */
	public static int getSystemYear() {
		Calendar cal = Calendar.getInstance();
		cal.clear();//实例化Calendar之后,执行clear方法,清除Calendar中的缓存
		cal.setTime(new Date());
		int year = cal.get(Calendar.YEAR);
		return year;
	}
	/**
	 * 获取指定日期,多少分钟的时间
	 * @param date
	 * @param min 分钟:负数=之前的时间,正数=之后的时间
	 * @return
	 */
	public static Date getDateByMin(Date date,int min) {
		Calendar cal = Calendar.getInstance();
		cal.clear();//实例化Calendar之后,执行clear方法,清除Calendar中的缓存
		cal.setTime(date);
		cal.add(Calendar.MINUTE, min);// 3分钟之前的时间
		return cal.getTime();
	}
	/**
	 * 获取指定日期,多少分钟的时间
	 * @param date
	 * @param min 分钟:负数=之前的时间,正数=之后的时间
	 * @return
	 */
	public static Date getDateByHour(Date date,int hour) {
		Calendar cal = Calendar.getInstance();
		cal.clear();//实例化Calendar之后,执行clear方法,清除Calendar中的缓存
		cal.setTime(date);
		cal.add(Calendar.HOUR_OF_DAY, hour);// 3分钟之前的时间
		return cal.getTime();
	}
	/**
	 * 获取指定日期,多少小时或者分钟的时间
	 * @param date
	 * @param type 类型:1=小时,2=分钟
	 * @param min 分钟:负数=之前的时间,正数=之后的时间
	 * @return
	 */
	public static Date getDateByHourOrMin(Date date,int type,int hourOrMin) {
		Calendar cal = Calendar.getInstance();
		cal.clear();//实例化Calendar之后,执行clear方法,清除Calendar中的缓存
		cal.setTime(date);
		if(type == 1) {
			cal.add(Calendar.HOUR_OF_DAY, hourOrMin);// 3分钟之前的时间
		}else if(type == 2) {
			cal.add(Calendar.MINUTE, hourOrMin);// 3分钟之前的时间
		}else {
			throw new RuntimeException();
		}
		return cal.getTime();
	}

/**
	* 获得该年月第一天
	* @param year
	* @param month
	* @return 返回如:2018-01-01
	*/
	public static String getFirstDayOfMonth(int year,int month){
        Calendar cal = Calendar.getInstance();
        cal.clear();//Calendar类当你set的时候,并不会立即生效,只有等你get的时候才会生效
        //实例化Calendar之后,执行clear方法,清除Calendar中的缓存       
        cal.set(Calendar.YEAR,year); //设置年份        
        cal.set(Calendar.MONTH, month-1);//设置月份       
        int firstDay = cal.getActualMinimum(Calendar.DAY_OF_MONTH); //获取某月最小天数        
        cal.set(Calendar.DAY_OF_MONTH, firstDay);//设置日历中月份的最小天数      
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");  //格式化日期
        String firstDayOfMonth = sdf.format(cal.getTime());
        return firstDayOfMonth;
    }
	
	/**
	* 获得该月最后一天
	* @param year
	* @param month
	* @return 返回如:2018-01-31
	*/
	public static String getLastDayOfMonth(int year,int month){
        Calendar cal = Calendar.getInstance();
        cal.clear();//Calendar类当你set的时候,并不会立即生效,只有等你get的时候才会生效        
        //实例化Calendar之后,执行clear方法,清除Calendar中的缓存        
        cal.set(Calendar.YEAR,year);//设置年份       
        cal.set(Calendar.MONTH, month-1); //设置月份       
        int lastDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH); //获取某月最大天数      
        cal.set(Calendar.DAY_OF_MONTH, lastDay); //设置日历中月份的最大天数       
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); //格式化日期
        String lastDayOfMonth = sdf.format(cal.getTime());
        return lastDayOfMonth;
	}
	public static void main(String[] args) {
		int run  = 3;
		System.out.println("当前执行:" + run);
		if(run == 1) {
			int length = 12;
			for (int i = 0; i < length; i++) {
				String forMsg = "[for:"+(i+1)+"/" +length + "]";
				int year = 2019,month = i+1;
				System.out.println(forMsg 
						+ "年:{" + year +"}"
						+ ",月:{" + month + "}" 
						+ ",最大天数:"	+ getMaxDayOfMonth(year,month)
						+ ",当前第一天:" +  getFirstDayOfMonth(year,month) 
						+ ",当前最后一天:" + getLastDayOfMonth(year,month));
			}
		}else if(run == 2 ) {
			System.out.println("获取指定日期,多少分钟的时间");
			Date date = new Date();
			String formateStr = "yyyy-MM-dd HH:mm:ss.SSS";
			SimpleDateFormat df = new SimpleDateFormat(formateStr);
			System.out.println("当前时间:" + df.format(date));
			System.out.println("之前时间:"+ df.format(getDateByMin(date, -5)));
			System.out.println("之后时间:"+ df.format(getDateByMin(date, 5)));
		}else if(run == 3) {
			System.out.println("获取指定日期,多少小时或者分钟的时间");
			Date date = new Date();
			String formateStr = "yyyy-MM-dd HH:mm:ss.SSS";
			SimpleDateFormat df = new SimpleDateFormat(formateStr);
			System.out.println("当前时间:" + df.format(date));
			System.out.println("小时,之前:"+ df.format(getDateByHourOrMin(date,1,-1)));
			System.out.println("小时,之后:"+ df.format(getDateByHourOrMin(date,1,1)));
			System.out.println("分钟,之前:"+ df.format(getDateByHourOrMin(date,2,-10)));
			System.out.println("分钟,之后:"+ df.format(getDateByHourOrMin(date,2,10)));
		}
	}
package com.hexiang.utils; import java.text.SimpleDateFormat; import java.util.*; public class CalendarUtil { public static void main(String args[]) { System.out.println("First day of week is : " + new SimpleDateFormat("yyyy-MM-dd") .format(getFirstDateByWeek(new Date()))); System.out.println("Last day of week is : " + new SimpleDateFormat("yyyy-MM-dd") .format(getLastDateByWeek(new Date()))); System.out.println("First day of month is : " + new SimpleDateFormat("yyyy-MM-dd") .format(getFirstDateByMonth(new Date()))); System.out.println("Last day of month is : " + new SimpleDateFormat("yyyy-MM-dd") .format(getLastDateByMonth(new Date()))); } /** * 获得所在星期的第一天 */ public static Date getFirstDateByWeek(Date date) { Calendar now = Calendar.getInstance(); now.setTime(date); int today = now.get(Calendar.DAY_OF_WEEK); int first_day_of_week = now.get(Calendar.DATE) + 2 - today; // 星期一 now.set(Calendar.DATE, first_day_of_week); return now.getTime(); } /** * 获得所在星期的最后一天 */ public static Date getLastDateByWeek(Date date) { Calendar now = Calendar.getInstance(); now.setTime(date); int today = now.get(Calendar.DAY_OF_WEEK); int first_day_of_week = now.get(Calendar.DATE) + 2 - today; // 星期一 int last_day_of_week = first_day_of_week + 6; // 星期日 now.set(Calendar.DATE, last_day_of_week); return now.getTime(); } /** * 获得所在月份的最后一天 * @param 当前月份所在的时间 * @return 月份的最后一天 */ public static Date getLastDateByMonth(Date date) { Calendar now = Calendar.getInstance(); now.setTime(date); now.set(Calendar.MONTH, now.get(Calendar.MONTH) + 1); now.set(Calendar.DATE, 1); now.set(Calendar.DATE, now.get(Calendar.DATE) - 1); now.set(Calendar.HOUR, 11); now.set(Calendar.MINUTE, 59); now.set(Calendar.SECOND, 59); return now.getTime(); } /** * 获得所在月份的第一天 * @param 当前月份所在的时间 * @return 月份的第一天 */ public static Date getFirstDateByMonth(Date date) { Calendar now = Calendar.getInstance(); now.setTime(date); now.set(Calendar.DATE, 0); now.set(Calendar.HOUR, 12); now.set(Calendar.MINUTE, 0); now.set(Calendar.SECOND, 0); return now.getTime(); } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值