当前日期的周一,下周日期,下月日期;批次号生成

package cn.weixiuhui.comm.util;

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

public class CreatSettleIntervalUtils {
	
	/**
	 * 周结批次格式
	 */
	public static final String DEFAULT_DATE_FORMAT_WEEK = "yyyyMMdd";
	/**
	 * 月结批次格式
	 */
	public static final String DEFAULT_DATE_FORMAT_MONTH = "yyyyMM";
	
  
	/**
	 * 当前时间周一的日期
	 * @param date
	 * @return
	 */
    public static Date getThisWeekMonday(Date date) {  
        Calendar cal = Calendar.getInstance();  
        cal.setTime(date);  
        // 获得当前日期是一个星期的第几天  
        int dayWeek = cal.get(Calendar.DAY_OF_WEEK);  
        if (1 == dayWeek) {  
            cal.add(Calendar.DAY_OF_MONTH, -1);  
        }  
        // 设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一  
        cal.setFirstDayOfWeek(Calendar.MONDAY);  
        // 获得当前日期是一个星期的第几天  
        int day = cal.get(Calendar.DAY_OF_WEEK);  
        // 根据日历的规则,给当前日期减去星期几与一个星期第一天的差值  
        cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day);  
        return cal.getTime();  
    }  
  
    /**
     * 返回当前时间的下周三日起
     * @param date
     * @return
     */
    public static Date getNextWeekWednesday(Date date) {  
        Calendar cal = Calendar.getInstance();  
        cal.setTime(getThisWeekMonday(date));  
        cal.add(Calendar.DATE, 9);  
        return cal.getTime();  
    } 
    
    /**
     * 周结批次号
     * @param date
     * @return
     */
    public static String getWeekSettleInterval(Date date){
    	if(null==date){
    		return null;
    	}
    	SimpleDateFormat dateFormatter = new SimpleDateFormat(DEFAULT_DATE_FORMAT_WEEK);
		return dateFormatter.format(getNextWeekWednesday(date));
    }
    
    /**
     * 月结批次号
     * @param date
     * @return
     */
    public static String getMonthSettleInterval(Date date){
    	SimpleDateFormat dateFormatter = new SimpleDateFormat(DEFAULT_DATE_FORMAT_MONTH);
        Calendar calendar = Calendar.getInstance();  
        calendar.add(Calendar.MONTH, 1);  
        return dateFormatter.format(calendar.getTime());  
    }
    
    
    /**
     * 返回批次号,类型为空的时候返回月结批次号
     * @param type 结算周期类型
     * @param date 生成批次基础时间
     * @return
     */
    public static String getSettleInterval(String type,Date date){
    	if("week".equals(type)){
    		return getWeekSettleInterval(date);
    	}else{
    		return getMonthSettleInterval(date);
    	}
    }
    
    /**
     * 测试
     * @param args
     */
    public static void main(String[] args) {
		System.out.println("周结批次号:"+getWeekSettleInterval(new Date()));
		System.out.println("月结批次号:"+getMonthSettleInterval(new Date()));
	}

}

你可能感兴趣的:(java工具类,java)