java按指定时间拆分月份
来源:互联网 发布:淘宝大卖家如何放单 编辑:程序博客网 时间:2024/06/18 07:10
/** * 按月份拆分 * * @param startTime 开始时间 * @param endTime 结束时间 * @param intervalDay 指定日 * @return * @author Shi Zezhu * @date 2017年8月2日 下午3:56:05 */ public static List<Timestamp> splitMonth(Timestamp startTime, Timestamp endTime, Integer intervalDay) { List<Timestamp> list = new ArrayList<Timestamp>(); if (startTime == null || endTime == null) { return list; } Calendar startCalendar = Calendar.getInstance(); startCalendar.setTime(startTime); Calendar endCalendar = Calendar.getInstance(); endCalendar.setTime(endTime); Calendar nextCalendar = Calendar.getInstance(); nextCalendar.set(startCalendar.get(Calendar.YEAR), startCalendar.get(Calendar.MONTH), startCalendar.get(Calendar.DAY_OF_MONTH), 23, 59, 59); nextCalendar.set(Calendar.MILLISECOND, 0); list.add(startTime); while (intervalDay != null) { if (intervalDay < 1) { intervalDay = 1; } if (intervalDay == 1) { nextCalendar.add(Calendar.MONTH, 1); } nextCalendar.set(Calendar.DAY_OF_MONTH, nextCalendar.getActualMaximum(Calendar.DAY_OF_MONTH) > intervalDay ? intervalDay - 1 : nextCalendar.getActualMaximum(Calendar.DAY_OF_MONTH) - 1); if (nextCalendar.compareTo(endCalendar) != -1) { break; } if (startCalendar.before(nextCalendar)) { startCalendar.setTime(nextCalendar.getTime()); list.add(new Timestamp(startCalendar.getTimeInMillis())); startCalendar.add(Calendar.SECOND, 1); list.add(new Timestamp(startCalendar.getTimeInMillis())); } nextCalendar.add(Calendar.MONTH, 1); } list.add(endTime); return list; } /** * 按月份拆分 * * @param startTime 开始时间 * @param endTime 结束时间 * @return * @author Shi Zezhu * @date 2017年8月2日 下午3:56:05 */ public static List<Timestamp> splitMonth(Timestamp startTime, Timestamp endTime) { return splitMonth(startTime, endTime, null); } public static void main(String[] args) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Timestamp startTime = new Timestamp(sdf.parse("2016-12-1 15:30:26").getTime()); Timestamp endTime = new Timestamp(sdf.parse("2017-3-18 18:30:26").getTime()); List<Timestamp> list = splitMonth(startTime, endTime, 31); for (Timestamp t : list) { System.out.println(sdf.format(t)); } }
输出:
2016-12-01 15:30:26
2016-12-30 23:59:59
2016-12-31 00:00:00
2017-01-30 23:59:59
2017-01-31 00:00:00
2017-02-27 23:59:59
2017-02-28 00:00:00
2017-03-18 18:30:26
使用:
for (int i = 0; i < splitTime.size();) {
Timestamp startTimeSub = splitTime.get(i++);
Timestamp endTimeSub = splitTime.get(i++);
................
}
阅读全文
1 0
- java按指定时间拆分月份
- java按照月份把一个时间段拆分成多个时间区间
- 获取指定月份月初,月末时间
- android 获取指定月份的开始时间 结束时间
- JAVA获取指定月份的天数
- java 求指定月份的天数
- php 获取指定两个时间之间相差的月份
- PHP获取指定月份的月初月尾时间
- js列出指定开始时间到现在的月份
- [php_13]PHP获取指定月份的月初月尾时间
- Oracle 获取指定区域月份或日期前后时间或者月份
- java利用当前时间,得到上一个月份
- 获取到指定时间区间的月份集合,以及月份集合的月份第一天和最后一天
- java 指定时间时间戳
- C++ 按指定分隔符拆分字符串
- epublib 按指定层级拆分电子书
- Core Java (六) 打印指定月份的日历
- Java小兵之路—获取指定月份的天数
- Hive分区表操作
- 谈谈RunLoop
- Codeforces Round #426 (Div. 2)The Meaningless Game【数学题】【水题】
- 信息标记与信息提取
- P3776工资管理
- java按指定时间拆分月份
- Azkaban使用简单笔记
- lombok的使用和原理
- 关于freemaker页面静态化的使用
- 如何在vue中引入第三方jquery,swiper等库(一)
- 2. Caffe依赖包解析
- mysql中的exists与in浅析
- <mvc:annotation-driven/>与<mvc:default-servlet-handler/>之间的一个问题
- 实现上拉出现抽屉的功能