昨天开发的时候,遇到一个需求,需要根据用户输入的两个日期,计算出这两个日期之间的所有间隔的月份,包括开始和结束日期,然后使用这些日期分别进行查询。搜了一下,没找到现成的例子。于是自己写了一个。
package com.inspur.servlet;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Test {
public static void main(String[] args) throws Exception {
compareTwoData4Days("2013-02-22", "2014-01-23");
System.err.println("-------------------");
compareTwoData4Months("2013-02-22", "2014-01-23");
}
/**
*
* @creator:李小龙
* @createDate:2014-9-4上午10:16:09
* @discription:比较两个日期的差值,精确到“月”。包括开始和结束日期。
* @params:
* @return:
* @modifyInfo:
*/
static void compareTwoData4Months(String begin, String end)
throws Exception {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM");
Date bd = df.parse(begin);
Date ed = df.parse(end);
Calendar c = Calendar.getInstance();
c.setTime(bd);
c.add(Calendar.MONTH, -1);
Date nd = c.getTime();
while (nd.before(ed)) {
c.setTime(nd);
c.add(Calendar.MONTH, 1);
nd = c.getTime();
int year = c.get(Calendar.YEAR);
String month = (c.get(Calendar.MONTH) + 1) + "";
if (month.length() == 1)
month = "0" + month;
System.err.println(year + "-" + month);
}
}
/**
*
* @creator:李小龙
* @createDate:2014-9-4上午10:20:03
* @discription:比较两个日期的差值,精确到“天”。包括开始和结束日期。
* @params:
* @return:
* @modifyInfo:
*/
public static void compareTwoDa