`
fancyboy2050
  • 浏览: 238823 次
  • 性别: Icon_minigender_1
  • 来自: 皇城根儿下
社区版块
存档分类
最新评论
收藏列表
标题 标签 来源
时间操作 时间 Java常用时间操作工具类
package www.mingketang.com;

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

/**
 * @author: Frank
 * @site: <a href="http://www.mingketang.com">名课堂企业管理培训网</a>
 * @company: http://www.sellyell.com
 * @blog: http://crazysheep.iteye.com/
 */
public class DateUtils {

	//http响应头Expire属性时间格式
	public static final String HTTP_RESPONSE_DATE_HEADER = "EEE, dd MMM yyyy HH:mm:ss zzz";
		
	//http响应头Expire属性时间格式工具
	public static final SimpleDateFormat responseHeaderFormat = new SimpleDateFormat(HTTP_RESPONSE_DATE_HEADER,Locale.US);

	static{
		responseHeaderFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
	}
	
	/**
	 * 某个时间点的下个月的第一天
	 * @param day
	 * @return
	 */
	public static Date firstDayInNextMonth(Date day){
		Calendar c = Calendar.getInstance();
		c.setTime(day);
		c.set(Calendar.MONTH, c.get(Calendar.MONTH)+1);
		c.set(Calendar.DAY_OF_MONTH, 1);
		c.set(Calendar.HOUR_OF_DAY, 0);
		c.set(Calendar.MINUTE, 0);
		c.set(Calendar.SECOND, 0);
		return c.getTime();
	}

	/**
	 * 获取某天在星期中的排序值:
	 * 星期日 -> 星期六 对应为:1 -> 7
	 * @param date
	 * @return
	 */
	public static int getDateInWeek(Date date) {
		Calendar c = Calendar.getInstance();
		c.setTime(date);
		return c.get(Calendar.DAY_OF_WEEK);
	}

	/**
	 * 获取指定日期后n天的凌晨
	 * @param date
	 * @param n
	 * @return
	 */
	public static Date getDateNextDay(Date date, int n) {
		Calendar c = Calendar.getInstance();
		c.setTime(date);
		c.add(Calendar.DATE, n);
		return c.getTime();
	}
	
	/**
	 * 获取下n个月后的日期
	 * @param n 月份偏移量
	 * @return
	 */
	public static Date getDateNextMonth(int n) {
		Calendar now = Calendar.getInstance();
		now.set(Calendar.MONTH, now.get(Calendar.MONTH) + n);// 设置时间向前进n个月
		now.set(Calendar.HOUR_OF_DAY, 0);
		now.set(Calendar.MINUTE, 0);
		now.set(Calendar.SECOND, 0);
		return now.getTime();
	}

	/**
	 * 获取今天在本月中的号码
	 * @return
	 */
	public static int getDateOfMoth() {
		return Calendar.getInstance().get(Calendar.DAY_OF_MONTH);
	}
	
	/**
	 * 本月的所有日期集合
	 * @return
	 */
	public static List<Date> getDatesInMonth() {

		List<Date> dates = new ArrayList<Date>();

		Calendar c = Calendar.getInstance();

		// 设置代表的日期为1号
		c.set(Calendar.DATE, 1);

		// 获得当前月的最大日期数
		int maxDay = c.getActualMaximum(Calendar.DATE);

		for (int i = 1; i <= maxDay; i++) {
			c.set(Calendar.DATE, i);
			dates.add(c.getTime());
		}

		return dates;
	}
	
	/**
	 * 获取某个时间所在的月份
	 * @param date
	 * @return
	 */
	public static int getMonth(Date date) {
		Calendar c = Calendar.getInstance();
		c.setTime(date);
		return c.get(Calendar.MONTH) + 1;
	}

	/**
	 * 获取本月最后一天
	 * @return
	 */
	public static Date getMonthEnd() {
		int length = getDateOfMoth();
		Calendar c = Calendar.getInstance();
		c.set(Calendar.DATE, length);
		c.set(Calendar.HOUR, 24);
		c.set(Calendar.MINUTE, 0);
		c.set(Calendar.SECOND, 0);
		return c.getTime();
	}

	/**
	 * 获取某个时间所在月份的最后一秒
	 * @param date 
	 * @return
	 */
	public static Date getMonthEnd(Date date){
		if(date == null){
			return null;
		}
		Calendar start = Calendar.getInstance();
		start.setTime(date);
		start.set(Calendar.MONTH, start.get(Calendar.MONTH)+1);
		start.set(Calendar.DAY_OF_MONTH, 1);
		start.set(Calendar.HOUR, 0);
		start.set(Calendar.MINUTE, 0);
		start.set(Calendar.SECOND, 0);
		return start.getTime();		
	}
		
	/**
	 * 获取某个时间所在月份的第一天凌晨
	 * @param date 
	 * @return
	 */
	public static Date getMonthStart(Date date){
		if(date == null){
			return null;
		}
		Calendar start = Calendar.getInstance();
		start.setTime(date);
		start.set(Calendar.DAY_OF_MONTH, 1);
		start.set(Calendar.HOUR, 0);
		start.set(Calendar.MINUTE, 0);
		start.set(Calendar.SECOND, 0);
		return start.getTime();		
	}
	
	/**
	 * 获取今天凌晨
	 * @return
	 */
	public static Date getMorning() {
		return getMorning(new Date());
	}

	/**
	 * 获取指定时间当天的凌晨
	 * @param date 给定时间当天的凌晨
	 * @return
	 */
	public static Date getMorning(Date date) {
		Calendar c = Calendar.getInstance();
		c.setTime(date);
		c.set(Calendar.HOUR_OF_DAY, 0);
		c.set(Calendar.MINUTE, 0);
		c.set(Calendar.SECOND, 0);
		return c.getTime();
	}

	/**
	 * 获取当前时间N天后的凌晨
	 */
	public static Date getMorningNextDate(int n) {
		Calendar now = Calendar.getInstance();
		now.set(Calendar.DATE, now.get(Calendar.DATE) + n); //设置时间向前进n天
		now.set(Calendar.HOUR_OF_DAY, 0);
		now.set(Calendar.MINUTE, 0);
		now.set(Calendar.SECOND, 0);
		return now.getTime();
	}
	
	/**
	 * 系统当前时间过N个月后的时间
	 * @param nextStep 月份偏移量
	 * @return
	 */
	public static Date getNextMonth(int nextStep){
		Calendar c = Calendar.getInstance();
		int m = c.get(Calendar.MONTH);
		c.set(Calendar.MONTH, m + nextStep);
		return c.getTime();
	}

	/**
	 * 计算给定时间推进一个月对应的时间
	 * @param date 给定时间
	 * @return 某时间过一个月后所在的时间
	 */
	public static Date getNextMonthToday(Date date){
		Calendar c = Calendar.getInstance();
		c.setTime(date);
		c.set(Calendar.MONTH, c.get(Calendar.MONTH)+1);		
		return c.getTime();
	}
	
	/**
	 * 获取系统当前时间所在的年份
	 * @return
	 */
	public static int getYear() {
		return Calendar.getInstance().get(Calendar.YEAR);
	}
	
	/**
	 * 获取给定时间所在的年份
	 * @param date 时间
	 * @return 时间所在的年份
	 */
	public static int getYear(Date date){
		Calendar c = Calendar.getInstance();
		c.setTime(date);
		return c.get(Calendar.YEAR);
	}

	/**
	 * 获取某年分的最后一天结束的时间
	 * @param year 年份
	 * @return 指定年份的最后一天结束
	 */
	public static Date getYearEnd(int year) {
		Calendar c = Calendar.getInstance();
		c.set(Calendar.YEAR, year);
		c.set(Calendar.MONTH,Calendar.DECEMBER);
		c.set(Calendar.DAY_OF_MONTH, 31);
		c.set(Calendar.HOUR_OF_DAY, 23);
		c.set(Calendar.MINUTE, 59);
		c.set(Calendar.SECOND, 59);
		return c.getTime();
	}

	/**
	 * 获取某年份的第一天凌晨
	 * @param year 年份
	 * @return 指定年份的第一天凌晨
	 */
	public static Date getYearStart(int year) {
		Calendar c = Calendar.getInstance();
		c.set(Calendar.YEAR, year);
		c.set(Calendar.MONTH, Calendar.JANUARY);
		c.set(Calendar.DAY_OF_MONTH,1);
		c.set(Calendar.HOUR_OF_DAY, 0);
		c.set(Calendar.MINUTE, 0);
		c.set(Calendar.SECOND, 0);
		return c.getTime();
	}
}

Global site tag (gtag.js) - Google Analytics