JAVA 获取当前月第一天,最后一天;上个月第一天,最后一天;下个月第一天,最有一天。

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.Map;

/**
 * 
 * 功能: 获取当前月第一天,最后一天;上个月第一天,最后一天;下个月第一天,最有一天。
 * 作者: SealZhang & peter
 * 时间: 2015-1-16
 */

public class DateFirstLast {
	 private static Map<String, String> getDate(String date1) throws ParseException {
		  	SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
			Date date = df.parse(date1); 
		  
	        Calendar calendar1 = Calendar.getInstance();  // 使用默认时区和语言环境获得一个日历。
	        Calendar calendar2 = Calendar.getInstance();  
	        Calendar calendar3 = Calendar.getInstance();
	       
	        calendar1.setTime(date);  //setTime(Date date) 使用给定的Date设置此Calendar的时间。 
	        calendar2.setTime(date);	 
	        calendar3.setTime(date);
	        
	        calendar1.add(Calendar.MONTH, -1);    //上A
	        Date Date1 = calendar1.getTime();
	        
	        calendar2.add(Calendar.MONTH, 0);     //<span style="font-family: Arial, Helvetica, sans-serif;">中C</span>

	        Date Date2 = calendar2.getTime();
	        
	        calendar3.add(Calendar.MONTH, 1);     //<span style="font-family: Arial, Helvetica, sans-serif;">下B</span>

	        Date Date3 = calendar3.getTime();
	        
	      
	        /**
	         * 上月第1天
	         */
                //GregorianCalendar 是 Calendar 的一个具体子类
	        GregorianCalendar gc1 = (GregorianCalendar) Calendar.getInstance();  
	        gc1.setTime(Date1);
	        gc1.set(Calendar.DAY_OF_MONTH, 1);     	//设置该月的第一天
	        String a_day_first = df.format(gc1.getTime());
	        StringBuffer str_a = new StringBuffer().append(a_day_first).append(" 00:00:00");    //拼接 时分秒
	        a_day_first = str_a.toString();
	        System.out.println("上月的第一天\t"+a_day_first);
	        
	        /**
	         * 上月最后一天
	         */
	        calendar1.add(Calendar.MONTH, 1);    	 //加一个月
	        calendar1.set(Calendar.DATE, 1);         //设置为该月第一天
	        calendar1.add(Calendar.DATE, -1);    	 //再减一天即为上个月最后一天
	        String a_day_last = df.format(calendar1.getTime());
	       StringBuffer endStra = new StringBuffer().append(a_day_last).append(" 23:59:59");//拼接 时分秒
	        a_day_last = endStra.toString();
	        System.out.println("上月最后一天\t"+a_day_last);
	        
	        /**
	         * 本月第一天
	         */
	        GregorianCalendar gc2 = (GregorianCalendar) Calendar.getInstance();
	        gc2.setTime(Date2);
	        gc2.set(Calendar.DAY_OF_MONTH, 1);          //设置该月的第一天
	        String b_day_first = df.format(gc2.getTime());
	        StringBuffer str_b = new StringBuffer().append(b_day_first).append(" 00:00:00");//拼接 时分秒
	        b_day_first = str_b.toString();
	        System.out.println("本月的第一天\t"+b_day_first);
	        
	       /**
	         * 本月最后一天
	         */
	        calendar2.add(Calendar.MONTH, 1);    	 //加一个月
	        calendar2.set(Calendar.DATE, 1);         //设置为该月第一天
	        calendar2.add(Calendar.DATE, -1);    	 //再减一天即为上个月最后一天
	        String b_day_last= df.format(calendar2.getTime());
	        StringBuffer endStrb = new StringBuffer().append(b_day_last).append(" 23:59:59");   //拼接 时分秒
	        b_day_last = endStrb.toString();
	        System.out.println("本月最后一天\t"+b_day_last);
	        
	        /**
	         * 下月第1天
	         */
	        GregorianCalendar gc3 = (GregorianCalendar) Calendar.getInstance();
	        gc3.setTime(Date3);
	        gc3.set(Calendar.DAY_OF_MONTH, 1);
	        String c_day_first = df.format(gc3.getTime());
	        StringBuffer str_c = new StringBuffer().append(c_day_first).append(" 00:00:00");//拼接 时分秒
	        c_day_first = str_c.toString();
	        System.out.println("下月的第一天\t"+c_day_first);
	        
	        /**
	         * 下月最后1天
	         */
	        calendar3.add(Calendar.MONTH, 1);    	 //加一个月
	        calendar3.set(Calendar.DATE, 1);         //设置为该月第一天
	        calendar3.add(Calendar.DATE, -1);    	 //再减一天即为上个月最后一天
	        String c_day_last= df.format(calendar3.getTime());
	        StringBuffer endStrc = new StringBuffer().append(c_day_last).append(" 23:59:59"); //拼接 时分秒
	        c_day_last = endStrc.toString();
	        System.out.println("下月最后一天\t"+c_day_last);
	        
	        Map<String, String> map = new HashMap<String, String>();
	       
	        map.put("a_day_first", a_day_first);
	        map.put("a_day_last", a_day_last);
	        
	        map.put("b_day_first", b_day_first);
	        map.put("b_day_last", b_day_last);
	        
	        
	        map.put("c_day_first", c_day_first);
	        map.put("c_day_last", c_day_last);
	        return map;
	 }
	 
	public static void main(String[] args) throws ParseException {
		 Map<String, String> map  =   getDate("2015-01-16");
		 System.out.println(map);
		 
	}
}
</pre><pre name="code" class="java">

上月的第一天 2014-12-01
上月最后一天 2014-12-31
本月的第一天 2015-01-01
本月最后一天 2015-01-31
下月的第一天 2015-02-01
下月最后一天 2015-02-28


以上代码有哪些地方可以优化的,请大家指教!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值