日期工具类

package com.zhanglu.date;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.TimeZone;

/**
 * 日期工具
 * @author zhanglu
 *
 */
public class DateUtil {
	private final static String GMT_CHINESE = "GMT+8";
	private final static String DATE_FORMAT01 = "yyyy-MM-dd HH:mm:ss";
	private final static String DATE_FORMAT02 = "yyyy-MM-dd";
	private static List list = new ArrayList();
	private static HashMap map = new HashMap();
	/**
	 * 取得某天相加(减)后的那一天
	 */
	public static Date getAnotherDate(Date date,int numer){
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		calendar.add(Calendar.DAY_OF_YEAR, numer);
		return calendar.getTime();
	}
	
	/**
	 * 格式化日期
	 */
	public static String dateFormat(String pattern,Date date){
		SimpleDateFormat sdf = new SimpleDateFormat(pattern);
		sdf.setTimeZone(setTimeZone());
		return sdf.format(date);
	}
	/**
	 * 获取系统属性
	 *
	 */
//	public static void getSystemInfo(){
//		Properties pros = System.getProperties();
//		Set set = pros.keySet();
//		Iterator it = set.iterator();
//		while(it.hasNext()){
//			String key = (String)it.next();
//			System.out.println(key+"="+pros.get(key));
//		}
//		
//	}
	/**
	 * 取得某月的最后一天
	 */
	public static Date getLastDayOfMonth(int year,int month){
		Calendar calendar = Calendar.getInstance();
		calendar.set(Calendar.YEAR, year);
		calendar.set(Calendar.MONTH, month-1);
//		int lastDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
//		calendar.set(Calendar.DAY_OF_MONTH, lastDay);
		calendar.set(Calendar.DATE, 1);
		calendar.add(Calendar.MONTH, 1);
		calendar.add(Calendar.DATE, -1);
		return calendar.getTime();
	}
	/**
	 * 设置时区
	 */
	public static TimeZone setTimeZone(){
		TimeZone zone = TimeZone.getTimeZone(DateUtil.GMT_CHINESE);
		//SimpleTimeZone stz = new SimpleTimeZone(zone.getRawOffset(),zone.getID());
		return zone;
	}
	/**
	 * 日期段有多少天
	 */
	public static List getDays(Calendar start,Calendar end){
		if(start == null || end == null) throw new NullPointerException("日期参数为空!");
		Calendar d1 = start;
		for(;d1.before(end);d1.add(Calendar.DAY_OF_YEAR, 1)){
			list.add(dateFormat(DATE_FORMAT02,d1.getTime()));
		}
		return list;
	}
	/**
	 * 取得某天是一年中的多少周
	 */
	public static int getWeekOfYear(Date date){
		if(date == null) throw new NullPointerException("参数不能为空!");
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		return calendar.get(Calendar.WEEK_OF_YEAR);
	}
	/**
	 * 取得某天所在周的第一天
	 */
	public static Date getFirstDayOfWeek(Date date){
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		int d = calendar.get(Calendar.DAY_OF_WEEK);
		calendar.add(Calendar.DAY_OF_YEAR, -d+1);
		return calendar.getTime();
	}
	/**
	 * 取得某一年共有多少周
	 */
	public static int getWeekOfYear(int year){
		Calendar calendar = Calendar.getInstance();
		calendar.set(Calendar.YEAR, year);
		return calendar.getMaximum(Calendar.WEEK_OF_YEAR);
	}
	/**
	 * 取得某年某周的第一天
	 * 交叉问题:比如2008.2.28到2009.1.3属于2008年最后一周,那么2009年第一周第一天从1.4号
	 */
	public static Date getFirstDay(int year,int week){
		Calendar calendar = Calendar.getInstance();
		int min_week = calendar.getMinimum(Calendar.WEEK_OF_YEAR);
		calendar.set(Calendar.YEAR, year);
		calendar.set(Calendar.WEEK_OF_YEAR, min_week);
		calendar.set(Calendar.DAY_OF_WEEK, 1);
		if(calendar.get(Calendar.YEAR) != year){
			week++;
			calendar.set(Calendar.YEAR, year);
			calendar.set(Calendar.WEEK_OF_YEAR, week);
		}
		return calendar.getTime();
	}
	/**
	 * 取得某年某周的最后一天
	 * 交叉问题:比如2008.2.28到2009.1.3属于2008年最后一周,那么2009.1.03为2008年最后一周的最后一天
	 */
	public static Date getLastDay(int year,int week){
		Calendar calendar = Calendar.getInstance();
		int min_week = calendar.getMinimum(Calendar.WEEK_OF_YEAR);
		calendar.set(Calendar.YEAR, year);
		calendar.set(Calendar.WEEK_OF_YEAR, min_week);
		calendar.set(Calendar.DAY_OF_WEEK, 1);
		if(calendar.get(Calendar.YEAR) != year){
			week++;
			calendar.set(Calendar.YEAR, year);
			calendar.set(Calendar.WEEK_OF_YEAR, week);
			calendar.set(Calendar.DAY_OF_WEEK,7);
		}
		return calendar.getTime();
	}
}

你可能感兴趣的:(java,idea)