`
dulinanaaa
  • 浏览: 14984 次
文章分类
社区版块
存档分类
最新评论

获取开始及结束日期间隔月份或年份列表

 
阅读更多
/**
	 * 获取开始及结束日期间隔月份列表
	 * start格式 "2015-01-01"
	 * end格式 "2016-01-01"
	 * @param start
	 * @param end
	 * @return
	 */
	public static List<String> getMonths(String start, String end) {
		List<String> dateList = new ArrayList<String>();
	    if (StringUtils.isNotBlank(start) && StringUtils.isNotBlank(end)) {
	    	Date dBegin = ToolDateTime.parse(start, ToolDateTime.pattern_ymd);
	    	Date dEnd = ToolDateTime.parse(end, ToolDateTime.pattern_ymd);
	    	
	    	Calendar calBegin = Calendar.getInstance();
	    	// 使用给定的 Date 设置此 Calendar 的时间  
	    	calBegin.setTime(dBegin);
	    	int yearMonth1 = (calBegin.get(Calendar.YEAR)) * 100 + calBegin.get(Calendar.MONTH);
	    	Calendar calEnd = Calendar.getInstance();
	    	// 使用给定的 Date 设置此 Calendar 的时间  
	    	calEnd.setTime(dEnd);
	    	int yearMonth2 = (calEnd.get(Calendar.YEAR)) * 100 + calEnd.get(Calendar.MONTH);
	    	// 测试此日期是否在指定日期之后  
	    	while (yearMonth2 >= yearMonth1) {
	    		dateList.add(ToolDateTime.format(calBegin.getTime(), ToolDateTime.pattern_ym));
	    		calBegin.add(Calendar.MONTH, 1); 
	    		yearMonth1 = (calBegin.get(Calendar.YEAR)) * 100 + calBegin.get(Calendar.MONTH);
	    	}
	    }
	    return dateList;
    }
	
	/**
	 * 获取开始及结束日期间隔年份列表
	 * start格式 "2015-01-01"
	 * end格式 "2016-01-01"
	 * @param start
	 * @param end
	 * @return
	 */
	public static List<String> getYears(String start, String end) {
		List<String> dateList = new ArrayList<String>();
		if (StringUtils.isNotBlank(start) && StringUtils.isNotBlank(end)) {
			Date dBegin = ToolDateTime.parse(start, ToolDateTime.pattern_ymd);
			Date dEnd = ToolDateTime.parse(end, ToolDateTime.pattern_ymd);
			
			Calendar calBegin = Calendar.getInstance();
			// 使用给定的 Date 设置此 Calendar 的时间  
			calBegin.setTime(dBegin);
			int year1 = calBegin.get(Calendar.YEAR);
			Calendar calEnd = Calendar.getInstance();
			// 使用给定的 Date 设置此 Calendar 的时间  
			calEnd.setTime(dEnd);
			int year2 = calEnd.get(Calendar.YEAR);
			// 测试此日期是否在指定日期之后  
			while (year2 >= year1) {
				dateList.add(ToolDateTime.format(calBegin.getTime(), "yyyy"));
				calBegin.add(Calendar.YEAR, 1); 
				year1 = calBegin.get(Calendar.YEAR);
			}
		}
		return dateList;
	}


注:

工具类ToolDateTime.class没粘,把下面的改成自己的方法即可

public static final String pattern_ym = "yyyy-MM"; // pattern_ym
public static final String pattern_ymd = "yyyy-MM-dd"; // pattern_ymd


public static String format(Date date, String pattern) {
DateFormat format = new SimpleDateFormat(pattern);
return format.format(date);
}

public static Date parse(String date, String pattern) {
SimpleDateFormat format = new SimpleDateFormat(pattern);
try {
return format.parse(date);
} catch (ParseException e) {
log.error("ToolDateTime.parse异常:date值" + date + ",pattern值" + pattern);
return null;
}
}

分享到:
评论

相关推荐

    js 获取本周、上周、本月、上月、本季度、上季度的开始结束日期

    在JavaScript中,获取特定时间...这个代码段提供了一个完整的解决方案,可以方便地在JavaScript中获取各种时间范围的开始和结束日期,这对于数据分析、报表生成或任何需要根据时间范围进行操作的应用程序都非常有用。

    指定日期算秒

    `ArithmeticSecond.cs`可能包含了计算秒数差值的算法,而`BarrelByMonth.cs`可能是用来处理月份相关计算的类或方法,如计算每个月的开始和结束秒数。 总结来说,这个任务涉及了日期时间的处理、闰年判断、时间间隔...

    js计算两个日期间的天数月的实例代码

    如果开始日期在结束日期之后,函数会返回错误消息。接着,它会检查两个日期是否在同一年内,如果是,就计算并返回年份差。如果月份不同,函数也会计算并返回月份数。对于天数,它没有像`dateU`函数那样精确地计算...

    java 采用单例模式计算当年有多少个周,并列出所有周以及每一个周所对应的时间段(内含注释)

    根据给定文件的信息,本文将详细解析如何使用Java语言及单例模式来...这种方法不仅可以用于统计当前年份的信息,还可以轻松地扩展到其他年份或月份的计算需求。此外,通过单例模式的应用,确保了数据的一致性和准确性。

    输入日期,就算两个日期相差几天

    压缩包中的文件名称列表"年月日"可能表示文件命名格式为"年份-月份-日期"。在处理这些文件时,我们可以用相同的方法解析日期,然后进行排序、统计或者其他操作。 综上所述,掌握日期差计算和星期几的获取是编程中...

    Excel2003函数应用完全手册

    - 计算基于360天一年的日期间隔。 - 参数包括起始日期和结束日期。 - **EDATE** - 计算指定月份后的日期。 - 参数为起始日期和月份数。 - **EOMONTH** - 计算指定月份后的月末日期。 - 参数同EDATE。 - **...

    sql日期函数大全

    4. **计算两个日期间的间隔**:`DATEDIFF(day, start_date, end_date)`可以计算两个日期之间的天数,这对于评估任务持续时间或计算年龄很有帮助。 综上所述,SQL中的日期函数提供了丰富的功能,可以满足各种日期...

    element年范围选择

    此外,日期选择器还支持各种事件,如`change`事件,当用户选择新的日期范围时触发,可以获取到选择的开始和结束日期。这对于监听用户操作和更新相关业务逻辑非常有用。 ```javascript v-model="value" type=...

    EXCEL中每个函数代表的含义.doc

    * NETWORKDAYS:返回开始日期和结束日期之间完整的工作日数值 * DAYS360:按照一年 360 天计算,返回两日期间相差的天数 * YEARFRAC:返回开始日期和结束日期之间的天数占全年天数的百分比 逻辑函数 EXCEL 中的...

    Oracle中 对日期时间类型的操作 - 详细.pdf

    6. 年份和月份的天数: 要获取年初至今的天数,可以使用`SELECT ceil(sysdate - trunc(sysdate, 'year')) FROM dual`;查询本月的天数,可以用`SELECT to_char(last_day(SYSDATE),'dd') days FROM dual`;而今年的...

    优秀程序员之路——C开发经验及技巧大汇总.pdf

    局部变量的生命周期从定义它的函数开始执行到函数结束,如果局部变量被声明为 `static` 类型,则在整个程序执行期间都存在,但仍然只在定义它的函数中有效。 - **全局变量**:在整个程序的任何地方都有效,只要在...

    office函数大全

    - **功能**:计算两个日期间的有效工作日数量。 - **应用场景**:用于计算项目预计完成所需的工时。 ##### NOW - 返回当前日期和时间的系列数 - **功能**:返回当前系统的日期和时间。 - **应用场景**:用于标记...

    生成时间维度表的存储过程

    4. 使用`WHILE`循环遍历每一天,直到达到结束日期(2010年12月31日)。 5. 在每次循环中,获取当前日期的详细时间信息,并插入到`time_by_day_dimension`表中。 6. 更新`@dDate`为下一天,继续下一轮循环。 #### 4....

    简单的几个基础sql日期函数

    1. `interval`:这是个必需的参数,用来指定日期间隔类型,例如天数、月份或年份等。不同的数据库系统可能支持不同的间隔类型,但常见的有`dd`(天)、`mm`(月)、`yy`或`yyyy`(年)、`ww`(周)等。 2. `date1`...

    修改好的漂亮的js日期控件

    - **年份范围**:通过 `chendyYearSt` 和 `chendyYearEnd` 设置可选年份的起始和结束年份,默认分别为 1950 年和 2050 年。 - **当前日期**:获取并存储当前日期的年月日信息,如 `chendyYear`、`chendyMonth` 和 `...

    与时间相关的SQL语句

    DATEDIFF - 计算日期间的差值 - **函数**: `DATEDIFF(interval, date1, date2)` - **用途**: 计算两个日期之间的差值。 - **参数**: - `interval`: 指定时间间隔类型(如 day, month, year 等)。 - `date1`: ...

    办公软件office中的Excel函数使用

    - **YEARFRAC**: 返回代表start_date(开始日期)和end_date(结束日期)之间天数的以年为单位的分数。这在计算日期差时非常有用,特别是当需要以年为单位表示时。 #### DDE和外部函数 - **CALL**: 调用动态链接库...

    字符串和日期函数总结

    - `datepart`:指定要添加或减少的部分(如年份 `yy`、天数 `dd` 等)。 - `number`:要添加或减少的数量。 - `date`:要进行操作的日期。 - **返回值**:返回根据 `datepart` 和 `number` 对 `date` 进行操作后...

    促销活动计划表(表格模板、DOC格式).doc

    编号可以按照年份、季度、月份或者活动类型进行编制,例如“2023-Q2-SHOP001”代表2023年第二季度的商店促销活动1号。这样便于后期的数据分析和效果评估。 二、针对产品 促销活动的目标产品是计划的核心部分,明确...

Global site tag (gtag.js) - Google Analytics