获取到指定时间区间的月份集合,以及月份集合的月份第一天和最后一天
2015-12-24 08:44
507 查看
由于接口的需要,我参考了很多的获取月份的博客,经过一些的测试,完成了下面的测试,不足之处是: 目前还是不能直接在获取第一天和最后一天的方法里面添加时分秒,所以还得再研究。
package com.hopechart.gtos.action.gps.servlet; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.List; import java.util.Locale; import org.apache.commons.javaflow.bytecode.Continuable; public class test { private static List<String> getMonthBetween(String minDate, String maxDate) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM");//格式化为年月 ArrayList<String> result = new ArrayList<String>(); Calendar min = Calendar.getInstance(); Calendar max = Calendar.getInstance(); min.setTime(sdf.parse(minDate)); min.set(min.get(Calendar.YEAR), min.get(Calendar.MONTH), 1); max.setTime(sdf.parse(maxDate)); max.set(max.get(Calendar.YEAR), max.get(Calendar.MONTH), 2); Calendar curr = min; while (curr.before(max)) { result.add(sdf.format(curr.getTime())); curr.add(Calendar.MONTH, 1); } return result; } /** * 得到某年某月的第一天 * * @param year * @param month * @return * @throws ParseException */ public static String getMonthFirstDay(String startTime) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");//格式化为年月 Calendar calendar = Calendar.getInstance(); try 4000 { calendar.setTime(sdf.parse(startTime+"01")); } catch (ParseException e) { e.printStackTrace(); } String Strat = sdf.format(calendar.getTime()); return Strat; } /** * 得到本月的最后一天 * @return */ public static String getMonthEndDay(String endDay) { SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");//格式化为年月 Calendar calendar = Calendar.getInstance(); try { calendar.setTime(sdf.parse(endDay+"01")); } catch (ParseException e) { e.printStackTrace(); } calendar.add(Calendar.MONTH,1);//日期倒数一日,既得到本月最后一天 calendar.add(Calendar.DAY_OF_MONTH, -1); String end =sdf.format(calendar.getTime()); return end; } public static void getMonth(String start, String end ) { try { List list = getMonthBetween(start, end); String ensdata = null; List ListS= new ArrayList(); List ListE= new ArrayList(); for (int i=0;i<list.size();i++){ Object data =list.get(i); ensdata = data.toString(); ListE.add(getMonthEndDay(ensdata)+"235959") ; ListS.add(getMonthFirstDay(ensdata)+"000000"); } System.out.println("开始"+ListS); System.out.println("结束"+ListE); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void main(String[] args) { getMonth("201511","201603"); } }
相关文章推荐
- linux命令大全
- 51nod 1455:宝石猎人
- 取消WIN2003开机按ctrl+alt+del和关机需要注释
- iOS中网络编辑
- gitflow
- PHP+Mysql日期时间如何转换(UNIX时间戳和格式化日期)
- ios 常见错误整理 持续更新
- zabbix------以自动添加tomcat端口的一条数据为例,了解low level discovery
- win7_oracle11g_64位连接32位PLSQL_Developer
- NSUserDefaults读取和写入自定义对象
- 数据挖掘(二)——Knn算法的java实现
- 重写和重载的区别小结
- 406 Not Acceptable
- 判断两线段是否相交
- php webservice应用
- mount命令使用具体解释(Linux)
- 看顶级高手如何编程--从带程序员新手想到的
- CSS样式表 超链接编辑
- 基于NSUserDefaults的数据存储
- 多线程的概念