java日期工具类

public class DateUtils {
	private static Log logger = LogFactory.getLog(DateUtils.class);
	public static String getFirstDayOfMonth(int year, int month) {
		Calendar cal = Calendar.getInstance();
		// 设置年份
		cal.set(Calendar.YEAR, year);
		// 设置月份
		cal.set(Calendar.MONTH, month - 1);
		// 设置日历中月份的第1天
		cal.set(Calendar.DAY_OF_MONTH, 1);
		// 格式化日期
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		String firstDayOfMonth = sdf.format(cal.getTime());
		return firstDayOfMonth;
	}
	
	public static String getLastDayOfMonth(int year, int month) {
		Calendar cal = Calendar.getInstance();
		// 设置年份
		cal.set(Calendar.YEAR, year);
		// 设置月份
		cal.set(Calendar.MONTH, month);
		// 设置日历中月份的最后1天
		cal.set(Calendar.DATE, 0);
		// 格式化日期
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		String lastDayOfMonth = sdf.format(cal.getTime());
		return lastDayOfMonth;
	}
	
	public static String getFirstDayOfYear(int year) {
		Calendar cal = Calendar.getInstance();
		// 设置年份
		cal.set(Calendar.YEAR, year);
		// 设置月份
		cal.set(Calendar.MONTH, 0);
		// 设置日历中月份的第1天
		cal.set(Calendar.DAY_OF_MONTH, 1);
		// 格式化日期
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		String firstDayOfYear = sdf.format(cal.getTime());
		return firstDayOfYear;
	}
	
	public static String getLastDayOfYear(int year) {
		Calendar cal = Calendar.getInstance();
		// 设置年份
		cal.set(Calendar.YEAR, year);
		// 设置月份
		cal.set(Calendar.MONTH, 11);
		// 设置日历中月份的最后1天
		cal.set(Calendar.DATE, 0);
		// 格式化日期
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		String lastDayOfYear = sdf.format(cal.getTime());
		return lastDayOfYear;
	}
	
	/**
	 * 获取当前月第一天
	 * @return
	 */
	public static String firstDayOfCurrentMonth(){
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		Calendar cal=Calendar.getInstance();//获取当前日期 
		cal.add(Calendar.MONTH, 0);
		cal.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天 
		return sdf.format(cal.getTime());
	}
	
	/**
	 * 获取当前月最后一天
	 * @return
	 */
	public static String lastDayOfCurrentMonth(){
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		Calendar cal = Calendar.getInstance();//获取当前日期 
		cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
		return sdf.format(cal.getTime());
	}
	
	
	public static String compareDate(String firstDate, String lastDate) {
		String retDate = null ;
		if(StringUtils.isEmpty(firstDate) && !StringUtils.isEmpty(lastDate)) {
			return lastDate ;
		}
		if(!StringUtils.isEmpty(firstDate) && StringUtils.isEmpty(lastDate)) {
			return firstDate ;
		}
		if(!StringUtils.isEmpty(firstDate) && !StringUtils.isEmpty(lastDate)) {
			// 格式化日期
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			try {
				Date first = sdf.parse(firstDate) ;
				Date last = sdf.parse(lastDate) ;
				if(first.after(last)) {
					return sdf.format(first) ;
				}else{
					return sdf.format(last) ;
				}
			} catch (ParseException e) {
				logger.error("", e);
			}
		}
		
		return retDate ;
	}
	
	public static Date getNextDay(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.DAY_OF_MONTH, +1);//+1今天的时间加一天
        date = calendar.getTime();
        return date;
    }
	
	/**
	 * 获取日期的月份
	 * @param date
	 * @return
	 */
	public static String getMonth(Date date){
		Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        int month = cal.get(Calendar.MONTH) + 1;
        if(month < 10){
        	return "0"+month;
        } else {
        	return String.valueOf(month);
        }
	}
	
	/**
	 * 使用用户格式格式化日期
	 * 
	 * @param date日期
	 * @param pattern日期格式
	 * @return
	 */
	public static String format(Date date, String pattern) {
		String returnValue = "";
		if (date != null) {
			SimpleDateFormat df = new SimpleDateFormat(pattern);
			returnValue = df.format(date);
		}
		return (returnValue);
	}
	
	/**
	 * 比较两个日期大小
	 * @param DATE1
	 * @param DATE2
	 * @param format 格式 yyyy-MM-dd,yyyy-MM-dd hh:mm:ss
	 * @return
	 */
	public static int compareDate(String DATE1, String DATE2, String format) {
	     DateFormat df = new SimpleDateFormat(format);
	     try {
	       Date dt1 = df.parse(DATE1);
	       Date dt2 = df.parse(DATE2);
	       if (dt1.getTime() > dt2.getTime()) {
	         return 1;
	       } else if (dt1.getTime() < dt2.getTime()) {
	         return -1;
	       } else {
	         return 0;
	       }
	     } catch (Exception e) {
	       e.printStackTrace();
	     }
	     return 0;
	   }
	
	public static void main(String[] args) {
		System.out.println(firstDayOfCurrentMonth());
		System.out.println(lastDayOfCurrentMonth());
		String camStartDate = "2016-11-11";
		String camEndDate = "2019-11-11";
		List<String> years = new ArrayList<>();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		try {
			Date d1 = sdf.parse(camStartDate);
			Date d2 = sdf.parse(camEndDate);
			Calendar c = Calendar.getInstance();
			c.setTime(d1);
			int year1 = c.get(Calendar.YEAR);
			c.setTime(d2);
			int year2 = c.get(Calendar.YEAR);
			do {
				if(year1 >= 2017){
					years.add(year1 + "");
				}
				year1++;
			} while (year2 >= year1);
			
		} catch (ParseException e) {
			e.printStackTrace();
		}
		System.out.println(years);
	}
	
	/**
	 * 传入月份,将period转换为MM的格式
	 * @param period
	 * @return
	 */
	public static String getMonthTwoPlace(String period){
		if(period.length() == 2){
			return period;
		}
		
		if(period.length() == 1){
			return "0" + period;
		}
		return null;
	}
	
	/**
	 * 将日期字符串转化为Date类型
	 * @param dateStr
	 * @param pattern
	 * @return
	 */
	public static Date StringToDate(String dateStr, String pattern) {
		try {
			DateFormat sdf = new SimpleDateFormat(pattern);
			Date date = sdf.parse(dateStr);
			return date;
		} catch (Exception ex) {
			return null;
		}
	}
	
	/**
	 * 将日期转化为字符串类型
	 * @param dateStr
	 * @param pattern
	 * @return
	 */
	public static String dateToString(Date date, String pattern) {
		DateFormat sdf = new SimpleDateFormat(pattern);
		String dateStr = sdf.format(date);
		return dateStr;
	}
}
原文地址:https://www.cnblogs.com/wangyayun/p/11732263.html