當前日期的週一,下週日期,下月日期;批次號生成

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()));
	}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章