按月份时间循环的代码

这段代码展示了如何使用Java的Calendar类和自定义的DateTools工具类,根据给定的开始和结束日期,按月份循环并获取每个月的起始和结束日期。代码通过判断条件实现了日期的递增,并打印出相应的日期。
public static void main(String[] args) throws ParseException {
		
		String forecastStartDate ="2017-02-11";
		String forecastEndDate="2017-05-23";
		String forecastEnd;
		//定义日期实例
		Calendar calendar = Calendar.getInstance();
		
		try {
			//定义起始日期
			Date start = new SimpleDateFormat("yyyy-MM-dd").parse(forecastStartDate);
			//定义结束日期
			Date end = new SimpleDateFormat("yyyy-MM-dd").parse(forecastEndDate);
			//设置日期起始时间
			calendar.setTime(start);
			while(calendar.getTime().before(end)){//判断是否到结束日期
				SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
				String str = sdf.format(calendar.getTime());
				
				
				forecastEnd = DateTools.getMaxMonthDate(str);
				
				//queryCheck.put("forecastStartDate", forecastStartDate);
//				System.out.println(str);
				String forecastStart=DateTools.getMinMonthDate(str);
				
				
				
				
				if (!forecastStartDate.substring(0, forecastEnd.lastIndexOf("-")).equals(str.substring(0, str.lastIndexOf("-")))) {
					System.out.println(forecastStart);
					if (forecastEnd.substring(0, forecastEnd.lastIndexOf("-")).equals(forecastEndDate.substring(0, str.lastIndexOf("-")))) {
						System.out.println(forecastEndDate);
						break;
					}else {
						System.out.println(forecastEnd);
						calendar.add(Calendar.MONTH, 1);
						continue;
					}

				}
				
				//queryCheck.put("forecastEndDate", forecastEnd);
				System.out.println(str);
				System.out.println(forecastEnd);
				// 查询结果集
				//List<StationChenk> stationChenkList = dao.getCheckValue(queryCheck);
				
				
				calendar.add(Calendar.MONTH, 1);//进行当前日期月份加1
				
			}
			
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
calendar.add(Calendar.MONTH, 1) 这行代码可以实现月份、日期、小时的累加,可以满足大多数的要求;
前提是必须要新建一个时间类如下:
package com.supermap.gwfs.check.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

import com.supermap.gwfs.check.entity.StationChenk;

/**
 * 时间换算工具类
 * 
 * @author mincha
 * 
 */
public class DateTools {
	// 引入calendar类
	Calendar calendar = Calendar.getInstance();
	static SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

	/**
	 * 获取月份起始日期
	 * 
	 * @param date
	 * @return
	 * @throws ParseException
	 */
	public static String getMinMonthDate(String date) throws ParseException {
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(dateFormat.parse(date));
		calendar.set(Calendar.DAY_OF_MONTH,
				calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
		return dateFormat.format(calendar.getTime());
	}

	/**
	 * 获取月份最后日期
	 * 
	 * @param date
	 * @return
	 * @throws ParseException
	 */
	public static String getMaxMonthDate(String date) throws ParseException {
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(dateFormat.parse(date));
		calendar.set(Calendar.DAY_OF_MONTH,
				calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
		return dateFormat.format(calendar.getTime());
	}

	/**
	 * 获取日期年份
	 * 
	 * @param date
	 * @return
	 * @throws ParseException
	 */
	public static int getYear(String date) throws ParseException {
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(dateFormat.parse(date));
		return calendar.get(Calendar.YEAR);
	}

	/**
	 * 获取日期月份
	 * 
	 * @param date
	 * @return
	 * @throws ParseException
	 */
	public static int getMonth(String date) throws ParseException {
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(dateFormat.parse(date));
		return (calendar.get(Calendar.MONTH) + 1);
	}

	/**
	 * 获取日期号
	 * 
	 * @param date
	 * @return
	 * @throws ParseException
	 */
	public static int getDay(String date) throws ParseException {
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(dateFormat.parse(date));
		return calendar.get(Calendar.DAY_OF_MONTH);
	}

}




                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值