java Calendar日期处理,代码如下:

package hk.com.cre.process.test;

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

import org.springframework.util.StringUtils;

/**
 * 日期处理工具类
 * @author ouyangjun
 */
public class SomeDateUtils {
	
	// 日期处理格式
	public static String DATE_PATTERN_YYYYMMDD = "yyyy-MM-dd";
	
	/**
	 * 把日期转成字符串格式
	 * @param date
	 * @return
	 */
	public static String formatDateYYYYMMDD(Date date) {
		SimpleDateFormat timeFt = new SimpleDateFormat(DATE_PATTERN_YYYYMMDD);
		String timeStr = (date == null ? "" : timeFt.format(date));
		return timeStr;
	}
	
	/**
     * 某年第一天
     * @param year
     * @return
     */
    public static String getFirstDayOfYear(int year) {
        return getFirstDayOfQuarter(year, 1);
    }

    /**
     * 某年最后一天 
     * @param year
     * @return
     */
    public static String getLastDayOfYear(int year) {
        return getLastDayOfQuarter(year, 4);
    }
    
    /**
     * 某年某季度第一天
     * @param year
     * @param quarter
     * @return
     */
    public static String getFirstDayOfQuarter(int year, int quarter) {
        int month = 0;
        if (quarter > 4) {
            return null;
        } else {
            month = (quarter - 1) * 3 + 1;
        }
        return getFirstDayOfMonth(year, month);
    }

    /**
     * 某年某季度最后一天
     * @param year
     * @param quarter
     * @return
     */
    public static String getLastDayOfQuarter(int year, int quarter) {
        int month = 0;
        if (quarter > 4) {
            return null;
        } else {
            month = quarter * 3;
        }

        return getLastDayOfMonth(year, month);
    }

    /**
     * 某年某月的第一天
     * @param year
     * @param month
     * @return
     */
    public static String getFirstDayOfMonth(int year, int month) {
        Calendar c = Calendar.getInstance();
        c.set(Calendar.YEAR, year);
        c.set(Calendar.MONTH, month-1);
        c.set(Calendar.DAY_OF_MONTH, c.getActualMinimum(Calendar.DAY_OF_MONTH));
        
        return formatDateYYYYMMDD(c.getTime());
    }

    /**
     * 某年某月的最后一天
     * @param year
     * @param month
     * @return
     */
    public static String getLastDayOfMonth(int year, int month) {
        Calendar c = Calendar.getInstance();
        c.set(Calendar.YEAR, year);
        c.set(Calendar.MONTH, month-1);
        c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DAY_OF_MONTH));
        
        return formatDateYYYYMMDD(c.getTime());
    }
    
    /**
     * 某一年周的总数
     * @param startDate: yyyy-MM-dd
     * @param endDate: yyyy-MM-dd
     * @return
     */
	public static int getMaxWeekNumOfYear(String startDate, String endDate) {
		if(!StringUtils.isEmpty(startDate) && !StringUtils.isEmpty(endDate)) {
			SimpleDateFormat timeFt = new SimpleDateFormat(DATE_PATTERN_YYYYMMDD);
			try {
				Date start = timeFt.parse(startDate);
				Date end =  timeFt.parse(endDate);
				Calendar cal=Calendar.getInstance();
				cal.setTime(start);
				long time1=cal.getTimeInMillis();
				cal.setTime(end);
				long time2=cal.getTimeInMillis();
				long between_days=(time2-time1)/(1000*3600*24);
				Double days=Double.parseDouble(String.valueOf(between_days));
				if((days/7)>0 && (days/7)<=1){
					//不满一周的按一周算
					return 1;
				} else if(days/7>1){
					int day=days.intValue();
					if(day%7>0){
						return day/7+1;
					}else{
						return day/7;
					}
				}else if((days/7)==0){
					return 0;
				}else{
					//负数返还null
					return 0;
				}
			} catch (ParseException e) {
				e.printStackTrace();
			}
		}
		return 0;
	}
    
    /**
     * 某年某周的第一天
     * @param year
     * @param week
     * @return
     */
    public static String getFirstDayOfWeek(int year, int week) {
        Calendar c = Calendar.getInstance();
        c.set(Calendar.YEAR, year);
        c.set(Calendar.WEEK_OF_YEAR, week);
        c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);//设置周一
        c.setFirstDayOfWeek(Calendar.MONDAY);
        
        return formatDateYYYYMMDD(c.getTime());
    }

    /**
     * 某年某周的最后一天
     * @param year
     * @param week
     * @return
     */
    public static String getLastDayOfWeek(int year, int week) {
        Calendar c = Calendar.getInstance();
        c.set(Calendar.YEAR, year);
        c.set(Calendar.WEEK_OF_YEAR, week);
        c.setFirstDayOfWeek(Calendar.MONDAY);
        c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek() + 6); // Sunday
        
        return formatDateYYYYMMDD(c.getTime());
    }
    
    /**
	 * 当前日期是几年第几周
	 * @return
	 */
	public static int getCurrentWeek() {
		Calendar cal = Calendar.getInstance();
		cal.setFirstDayOfWeek(Calendar.MONDAY);//设置周一为一周的第一天
		cal.setTime(new Date());
		return cal.get(Calendar.WEEK_OF_YEAR);
	}

    public static void main(String[] args) {
    	
    	System.out.println("某年第一天: " + getFirstDayOfYear(2018));

        System.out.println("某年最后一天 : " + getLastDayOfYear(2018));
        
        System.out.println("某年某季度第一天: " + getFirstDayOfQuarter(2018, 2));

        System.out.println("某年某季度最后一天: " + getLastDayOfQuarter(2018, 2));
        
        System.out.println("某年某月的第一天: " + getFirstDayOfMonth(2018, 2));

        System.out.println("某年某月的最后一天: " + getLastDayOfMonth(2018, 2));
        
        System.out.println("某一年周的总数 : " + getMaxWeekNumOfYear(getFirstDayOfYear(2018), getLastDayOfYear(2018)));
        
    	System.out.println("某年某周的第一天: " + getFirstDayOfWeek(2018, 1));

        System.out.println("某年某周的最后一天: " + getLastDayOfWeek(2018, 1));
        
        System.out.println("当前日期: " + formatDateYYYYMMDD(new Date()) + ", 本年第" + getCurrentWeek() + "周");
    }
    
}

打印效果图:

java Calendar日期处理

本章完结,待续!

 

本文说明:该文章属于原创,如需转载,请标明文章转载来源

相关文章: