`
HogwartsRow
  • 浏览: 57925 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

获取年、季度、周的开始日期和结束日期工具类

阅读更多
package com.hogwartsrow.test;

import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

/**
 * 复杂得日期工具类
 * @author HogwartsRow
 *
 */
public class MOEDateUtils {
	
	/**
	 * 获取某周得第一天
	 * @param year 年
	 * @param week 周
	 * @return
	 */
	public static Date getFirstDayOfWeek(int year, int week){
		Calendar c = new GregorianCalendar();
		
		c.set(Calendar.YEAR, year);
		c.set(Calendar.WEEK_OF_YEAR,  week);
		c.setFirstDayOfWeek(Calendar.MONDAY);
		c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek());
		c.set(Calendar.HOUR, 0);
		c.set(Calendar.MINUTE, 0);
		c.set(Calendar.SECOND, 0);
		
		return c.getTime(); 
	}
	
	/**
	 * 获取某周得最后一天
	 * @param year 年
	 * @param week 周
	 * @return
	 */
	public static Date getLastDayOfWeek(int year, int week){
		Calendar c = new GregorianCalendar();
		
		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);
		c.set(Calendar.HOUR, 23);
		c.set(Calendar.MINUTE, 59);
		c.set(Calendar.SECOND, 59);
		
		return c.getTime(); 
	}
	
	/**
	 * 获取某月得第一天
	 * @param year 年
	 * @param month 月
	 * @return
	 */
	public static Date getFirstDayOfMonth(int year, int month){
		Calendar c = new GregorianCalendar();
		
		c.set(year, month, 1);
		c.set(Calendar.HOUR, 0);
		c.set(Calendar.MINUTE, 0);
		c.set(Calendar.SECOND, 0);
		
		return c.getTime(); 
	}
	
	/**
	 * 获取某月得最后一天
	 * @param year 年
	 * @param month 月
	 * @return
	 */
	public static Date getLastDayOfMonth(int year, int month){
		Calendar c = new GregorianCalendar();
		
		c.set(year, month, 1);
		c.roll(Calendar.DATE, -1);
		c.set(Calendar.HOUR, 23);
		c.set(Calendar.MINUTE, 59);
		c.set(Calendar.SECOND, 59);
		
		return c.getTime(); 
	}
	
	/**
	 * 获取某季度得第一天
	 * @param year 年
	 * @param quarter 季度
	 * @return
	 */
	public static Date getFirstDayOfQuarter(int year, int quarter){
		Calendar c = new GregorianCalendar();
		
		int month = 0;
		switch (quarter) {
		case 1:
			month = 1-1;
			break;
		case 2:
			month = 4-1;		
			break;
		case 3:
			month = 7-1;
			break;
		case 4:
			month = 10-1;
			break;
		default:
			month = c.get(Calendar.MONTH);
			break;
		}
		
		return getFirstDayOfMonth(year, month); 
	}
	
	/**
	 * 获取某季度得最一天
	 * @param year 年
	 * @param quarter 季度
	 * @return
	 */
	public static Date getLastDayOfQuarter(int year, int quarter){
		Calendar c = new GregorianCalendar();
		
		int month = 0;
		switch (quarter) {
		case 1:
			month = 3-1;
			break;
		case 2:
			month = 6-1;		
			break;
		case 3:
			month = 9-1;
			break;
		case 4:
			month = 12-1;
			break;
		default:
			month = c.get(Calendar.MONTH);
			break;
		}
		
		return getLastDayOfMonth(year, month); 
	}
	
	/**
	 * 获取某年得第一天
	 * @param year 年
	 * @return
	 */
	public static Date getFirstDayOfYear(int year){
		return getFirstDayOfMonth(year, 0);
	}
	
	/**
	 * 获取某年得最后一天
	 * @param year 年
	 * @return
	 */
	public static Date getLastDayOfYear(int year){
		return getLastDayOfMonth(year, 11);
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		System.out.println("周一: " + getFirstDayOfWeek(2016, 25));

		System.out.println("周末: " + getLastDayOfWeek(2016, 25)); 
		
		System.out.println("月初:" + getFirstDayOfMonth(2016, 5));
		
		System.out.println("月末:" + getLastDayOfMonth(2016, 4));
		
		System.out.println("季初:" + getFirstDayOfQuarter(2016, 1));
		
		System.out.println("季末:" + getLastDayOfQuarter(2016, 2));
		
		System.out.println("年初:" + getFirstDayOfYear(2016));
		
		System.out.println("年末:" + getLastDayOfYear(2016));
		
	}

}

 

2
2
分享到:
评论
3 楼 sd445419855 2019-07-29  
有一个小坑,Calendar.HOUR, 是设置 12 小时制的时间,要设置 24 小时制的才好使 Calendar.HOUROFDAY 。 总体很棒!
2 楼 Saro 2016-06-23  
尝试下Joda-Time或者JAVA8吧。
1 楼 hardneedl 2016-06-23  
是时候用JAVA 8 新的日期时间类了

相关推荐

    根据输入的日期获取所属季度

    根据输入的日期获取所属季度,属于日期时间的工具类

    Java日期工具类

    Java日期工具类 1、日期的各种格式化 2、获取当前年度 3、获取当前月份 4、获取当前天号数 5、获取当前时间往前推一个月的时间 6、获取上个月("MMM yyyy") 7、获取上个月("yyyymm") 8、获取上个月("yyyy-mm") 9、...

    基于Java语言编写的Spring Boot时间工具类方法封装

    基于Java语言编写的Spring Boot时间工具类方法封装,主要方法如下:根据日期获取该日期内24小时的整点时刻、获取当月的 天数、根据 年、月 获取对应的月份 的 天数、根据指定日期得获取对应月份的所有日期的每日结束...

    java最全时间工具类,针对年月日周的操作

    java时间操作工具类,已封装好,包含获取某一时间的年,月,日,星期。以及对某一时间进行年,月,日,周的加减。还有获取某一时间年,月,日,周的起始和结束时间等等

    根据输入月份获取季度区间

    根据输入月份获取季度区间,属于日期时间的工具类!

    日期工具类-获取星座、生肖和各种日期格式的处理与获取

    日期工具类-获取星座、生肖和各种日期格式的处理与获取 日期工具类-获取星座、生肖和各种日期格式的处理与获取 日期工具类-获取星座、生肖和各种日期格式的处理与获取

    Java 日期比较工具类

    Java 日期比较工具类 各种日期操作及计算( 获取两个日期 间隔天数 间隔月数 格式化日期 )

    日期的工具类UtilDate日期计算比较润年获取转化判断

    学会日期的操作 日期的工具类UtilDate 日期计算 日期比较 润年判断 日期获取和转化 日期的判断

    java日期时间工具类超级全

    java日期时间工具类超级全。其中包含:获得当前日期 yyyy-MM-dd HH:mm:ss;获取系统当前时间戳;获取当前日期 yy-MM-dd;得到两个时间差 格式yyyy-MM-dd HH:mm:ss;转化long值的日期为yyyy-MM-dd HH:mm:ss.SSS格式的...

    java日期工具类

    java日期工具类,自定义日期输出格式,日期比较,获取几日前或几日后日期等

    DateFormatUtils时间获取及格式化工具类

    时间格式化及获取特殊时间工具类 主要包含但不限于: 当前星期的第一天 当前月最后一天 获取时间到今日结束还剩多少秒 获取 是否大于当前时间 相关的交易日 (年处理)入参yyyy 查询距离当前系统时间的本周星期一、...

    日期相关工具类,非常实用可靠。经常在项目中使用的资源。

    1. 返回当前时间的字符串, 2. 返回当月剩余秒数 3. 在原日期的基础上加上增加的小时数 4. 在原日期的基础上加上增加的天数 5. 比较连个日期的大小...12. 获取 指定开始日期和结束日期,包含的日期列表 13. getNextDay

    DateUtil日期工具类

    DateUtil 日期工具类

    Java中封装的全局日期处理工具类

    获取日期中的某数值。如获取月份 增加日期中某类型的某数值。如增加日期 获取精确的日期 判断字符串是否为日期字符串 获取日期字符串的日期风格。失敗返回null。 将日期字符串转化为日期。失败返回null。 ...

    日期工具类

    日期工具类、日期转换、工具类、直接使用、获取当前时间

    日期数据通用处理工具类

    日期数据通用处理工具类,例如根据给定日期获取下月第n天日期;获得当前日期与本周一相差的天数;获得当前日期所对应的上周星期几的日期;根据给定日期获取其后第n天日期等......

    DateUtils Java时间工具类

    非常好用的Date工具类 1、计算两个日期之间相差的天数 2、判断日期是否为周六日 3、获取当前周开始日期 4、获取当前周结束日期 5、判断年份是否是闰年 6、根据年份和月份计算天数 7、判断日期为该年的第几周 等等

    Date日期操作工具类

    Date日期处理的工具类,包括日期格式化,字符串转换成日期,对日期的【时分秒年月日】进行加/减,获取时间差,计算两个日期之间相差的天数,等各种对日期的操作

    操作日期时间的工具类,封装的比较完善

    java写的,操作日期时间的工具类,封装的比较完善,可以获取最小时间, 获取最大时间,获取今天最小时间,获取今天最大时间,获取明天的最小时间,获取明天的最大时间,获取昨天的最小时间,获取昨天的最大时间,...

Global site tag (gtag.js) - Google Analytics