/**
* 获取开始及结束日期间隔月份列表
* 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;
}
}
分享到:
相关推荐
在JavaScript中,获取特定时间...这个代码段提供了一个完整的解决方案,可以方便地在JavaScript中获取各种时间范围的开始和结束日期,这对于数据分析、报表生成或任何需要根据时间范围进行操作的应用程序都非常有用。
`ArithmeticSecond.cs`可能包含了计算秒数差值的算法,而`BarrelByMonth.cs`可能是用来处理月份相关计算的类或方法,如计算每个月的开始和结束秒数。 总结来说,这个任务涉及了日期时间的处理、闰年判断、时间间隔...
如果开始日期在结束日期之后,函数会返回错误消息。接着,它会检查两个日期是否在同一年内,如果是,就计算并返回年份差。如果月份不同,函数也会计算并返回月份数。对于天数,它没有像`dateU`函数那样精确地计算...
根据给定文件的信息,本文将详细解析如何使用Java语言及单例模式来...这种方法不仅可以用于统计当前年份的信息,还可以轻松地扩展到其他年份或月份的计算需求。此外,通过单例模式的应用,确保了数据的一致性和准确性。
压缩包中的文件名称列表"年月日"可能表示文件命名格式为"年份-月份-日期"。在处理这些文件时,我们可以用相同的方法解析日期,然后进行排序、统计或者其他操作。 综上所述,掌握日期差计算和星期几的获取是编程中...
- 计算基于360天一年的日期间隔。 - 参数包括起始日期和结束日期。 - **EDATE** - 计算指定月份后的日期。 - 参数为起始日期和月份数。 - **EOMONTH** - 计算指定月份后的月末日期。 - 参数同EDATE。 - **...
4. **计算两个日期间的间隔**:`DATEDIFF(day, start_date, end_date)`可以计算两个日期之间的天数,这对于评估任务持续时间或计算年龄很有帮助。 综上所述,SQL中的日期函数提供了丰富的功能,可以满足各种日期...
此外,日期选择器还支持各种事件,如`change`事件,当用户选择新的日期范围时触发,可以获取到选择的开始和结束日期。这对于监听用户操作和更新相关业务逻辑非常有用。 ```javascript v-model="value" type=...
* NETWORKDAYS:返回开始日期和结束日期之间完整的工作日数值 * DAYS360:按照一年 360 天计算,返回两日期间相差的天数 * YEARFRAC:返回开始日期和结束日期之间的天数占全年天数的百分比 逻辑函数 EXCEL 中的...
6. 年份和月份的天数: 要获取年初至今的天数,可以使用`SELECT ceil(sysdate - trunc(sysdate, 'year')) FROM dual`;查询本月的天数,可以用`SELECT to_char(last_day(SYSDATE),'dd') days FROM dual`;而今年的...
局部变量的生命周期从定义它的函数开始执行到函数结束,如果局部变量被声明为 `static` 类型,则在整个程序执行期间都存在,但仍然只在定义它的函数中有效。 - **全局变量**:在整个程序的任何地方都有效,只要在...
- **功能**:计算两个日期间的有效工作日数量。 - **应用场景**:用于计算项目预计完成所需的工时。 ##### NOW - 返回当前日期和时间的系列数 - **功能**:返回当前系统的日期和时间。 - **应用场景**:用于标记...
4. 使用`WHILE`循环遍历每一天,直到达到结束日期(2010年12月31日)。 5. 在每次循环中,获取当前日期的详细时间信息,并插入到`time_by_day_dimension`表中。 6. 更新`@dDate`为下一天,继续下一轮循环。 #### 4....
1. `interval`:这是个必需的参数,用来指定日期间隔类型,例如天数、月份或年份等。不同的数据库系统可能支持不同的间隔类型,但常见的有`dd`(天)、`mm`(月)、`yy`或`yyyy`(年)、`ww`(周)等。 2. `date1`...
- **年份范围**:通过 `chendyYearSt` 和 `chendyYearEnd` 设置可选年份的起始和结束年份,默认分别为 1950 年和 2050 年。 - **当前日期**:获取并存储当前日期的年月日信息,如 `chendyYear`、`chendyMonth` 和 `...
DATEDIFF - 计算日期间的差值 - **函数**: `DATEDIFF(interval, date1, date2)` - **用途**: 计算两个日期之间的差值。 - **参数**: - `interval`: 指定时间间隔类型(如 day, month, year 等)。 - `date1`: ...
- **YEARFRAC**: 返回代表start_date(开始日期)和end_date(结束日期)之间天数的以年为单位的分数。这在计算日期差时非常有用,特别是当需要以年为单位表示时。 #### DDE和外部函数 - **CALL**: 调用动态链接库...
- `datepart`:指定要添加或减少的部分(如年份 `yy`、天数 `dd` 等)。 - `number`:要添加或减少的数量。 - `date`:要进行操作的日期。 - **返回值**:返回根据 `datepart` 和 `number` 对 `date` 进行操作后...
编号可以按照年份、季度、月份或者活动类型进行编制,例如“2023-Q2-SHOP001”代表2023年第二季度的商店促销活动1号。这样便于后期的数据分析和效果评估。 二、针对产品 促销活动的目标产品是计划的核心部分,明确...