在做项目时候,有时需要给日期的查询条件在后台用java赋初始值,比如现在时间是2015-04-12,日期下拉框需要第一次默认的查询的起止日期为2015-04-01至2015-04-12则可以如下处理:

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;


public class TestCalendar1 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		getCurrentMonthStartDate("yyyy-MM-dd");
		getCurrentDate("yyyy-MM-dd");
	}
	
	/**
	 * 获取当前月一号时间
	 * @param str
	 * @return
	 */
	public static String getCurrentMonthStartDate(String str){
		SimpleDateFormat sdf = new SimpleDateFormat(str);
		Calendar date = Calendar.getInstance();
		date.set(Calendar.DAY_OF_MONTH, 1);
		System.out.println("当前月一号时间:"+sdf.format(date.getTime()));
		return sdf.format(date.getTime());
	}
	
	/**
	 * 获取当前日期
	 * @param str
	 * @return
	 */
	public static String getCurrentDate(String str){
		SimpleDateFormat sdf = new SimpleDateFormat(str);
		Calendar date = new GregorianCalendar();
		System.out.println("当前日期:"+sdf.format(date.getTime()));
		return sdf.format(date.getTime());
		
	}

}

执行后输出结果为:

当前月一号时间:2015-04-01
当前日期:2015-04-12

注意:Calendar.getInstance()和new GregorianCalendar()效果一样,通过查看java源码getInstance()方法是实例化了一个GregorianCalendar


上期时间:

        public static String getLastMonthDate(String str){
		SimpleDateFormat sdf = new SimpleDateFormat(str);
		Calendar date = Calendar.getInstance();
		date.add(Calendar.MONTH, -1);
		System.out.println("上期日期:"+sdf.format(date.getTime()));
		return sdf.format(date.getTime());
	}

结果:

上期日期:2015-03-12

同期日期:

        public static String getLastYearCurrentDate(String str){
		SimpleDateFormat sdf = new SimpleDateFormat(str);
		Calendar date = new GregorianCalendar();
		date.add(Calendar.YEAR, -1);
		System.out.println("同期日期:"+sdf.format(date.getTime()));
		return sdf.format(date.getTime());
	}

结果:

同期日期:2014-04-12


类似还有很多:

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;


public class TestCalendar {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		System.out.println("当前日期:"+getCurrentDate("yyyy-MM-dd"));//当前日期:2015-04-11
		System.out.println("同期日期:"+getLastYearCurrentDate("yyyy-MM-dd"));//同期日期:2014-04-11
		System.out.println("上期日期:"+getLastMonthDate("yyyy-MM-dd"));//上期日期:2015-03-11
		System.out.println("当前月一号日期:"+getCurrentMonthStartDate("yyyy-MM-dd"));//当前月一号日期:2015-04-01
		System.out.println("同期月一号日期:"+getLastYearCurrentMonthStartDate("yyyy-MM-dd"));//同期月一号日期:2014-04-01
		System.out.println("当前年一月一号:"+getCurrentYearStartDate("yyyy-MM-dd"));//当前年一月一号:2015-01-01
		System.out.println("去年一月一号"+geLastYearStartDate("yyyy-MM-dd"));//去年一月一号2014-01-01

	}
	
	/**
	 * 获取当前日期
	 * @param str
	 * @return
	 */
	public static String getCurrentDate(String str){
		SimpleDateFormat sdf = new SimpleDateFormat(str);
		Calendar date = new GregorianCalendar();
		return sdf.format(date.getTime());
	}
	/**
	 * 获取去年同一时间
	 * @param str
	 * @return
	 */
	public static String getLastYearCurrentDate(String str){
		SimpleDateFormat sdf = new SimpleDateFormat(str);
		Calendar date = new GregorianCalendar();
		date.add(Calendar.YEAR, -1);
		return sdf.format(date.getTime());
	}
	/**
	 * 获取上个月同一时间
	 * @param str
	 * @return
	 */
	public static String getLastMonthDate(String str){
		SimpleDateFormat sdf = new SimpleDateFormat(str);
		//Calendar date = new GregorianCalendar();
		Calendar date = Calendar.getInstance();
		/*
		 * Calendar.getInstance()和new GregorianCalendar()效果一样
		 * Calendar.getInstance()查看其getInstance()方法也是实例化了GregorianCalendar()
		 */
		date.add(Calendar.MONTH, -1);
		return sdf.format(date.getTime());
	}
	/**
	 * 获取当前月一号时间
	 * @param str
	 * @return
	 */
	public static String getCurrentMonthStartDate(String str){
		SimpleDateFormat sdf = new SimpleDateFormat(str);
		Calendar date = Calendar.getInstance();
		//date.set(Calendar.DATE, 1);
		date.set(Calendar.DAY_OF_MONTH, 1);//DATE和DAY_OF_WEEK效果一样,都是指一个月中的某天
		return sdf.format(date.getTime());
	}
	/**
	 * 获取去年当前月一号
	 * @param str
	 * @return
	 */
	public static String getLastYearCurrentMonthStartDate(String str){
		SimpleDateFormat sdf = new SimpleDateFormat(str);
		Calendar date = Calendar.getInstance();
		date.add(Calendar.YEAR, -1);
		date.set(Calendar.DATE, 1);
		return sdf.format(date.getTime());
	}
	/**
	 * 获取今年一月一号
	 * @param str
	 * @return
	 */
	public static String getCurrentYearStartDate(String str){
		SimpleDateFormat sdf = new SimpleDateFormat(str);
		Calendar date = Calendar.getInstance();
		date.set(date.get(Calendar.YEAR), 0, 1);
		return sdf.format(date.getTime());
	}
	/**
	 * 获取去年一月一号
	 * @param str
	 * @return
	 */
	public static String geLastYearStartDate(String str){
		SimpleDateFormat sdf = new SimpleDateFormat(str);
		Calendar date = Calendar.getInstance();
		date.set(date.get(Calendar.YEAR)-1, 0, 1);
		return sdf.format(date.getTime());
	}

}

结果:

当前日期:2015-04-12
同期日期:2014-04-12
上期日期:2015-03-12
当前月一号日期:2015-04-01
同期月一号日期:2014-04-01
当前年一月一号:2015-01-01
去年一月一号2014-01-01