Java计算某日期多少天前后的日期!和Calendar类中的常用字段和方法!

<span style="font-size:18px;">import java.text.ParseException;  
import java.text.SimpleDateFormat;  
import java.util.Calendar;  
import java.util.GregorianCalendar;  
  
public class Date {  
    /** 
     *  
     * @param datestr 日期字符串 
     * @param day  相对天数,为正数表示之后,为负数表示之前 
     * @return 指定日期字符串n天之前或者之后的日期 
     */  
    public static java.sql.Date getBeforeAfterDate(String datestr, int day) {  
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");  
        java.sql.Date olddate = null;  
        try {  
            df.setLenient(false);  
            olddate = new java.sql.Date(df.parse(datestr).getTime());  
        } catch (ParseException e) {  
            throw new RuntimeException("日期转换错误");  
        }  
        Calendar cal = new GregorianCalendar();  
        cal.setTime(olddate);  
  
        int Year = cal.get(Calendar.YEAR);  
        int Month = cal.get(Calendar.MONTH);  
        int Day = cal.get(Calendar.DAY_OF_MONTH);  
  
        int NewDay = Day + day;  
  
        cal.set(Calendar.YEAR, Year);  
        cal.set(Calendar.MONTH, Month);  
        cal.set(Calendar.DAY_OF_MONTH, NewDay);  
  
        return new java.sql.Date(cal.getTimeInMillis());  
    }  
    public static void main(String[] args) {  
        System.out.println(getBeforeAfterDate("2015-04-19",-3)); //获取2008-10-5之后三天的日期  
  
    }  
}</span>


Calendar类的常用字段和方法

import java.text.SimpleDateFormat;  
import java.util.Calendar;  
import java.util.Date;  
  
/**  
 * @deprecated Calendar的常用方法和常用属性小结  
 *   
 */  
public class CalendarTest {  
      
    public static void main(String[] args){  
        //常用方法  
        param();  
        //常用属性  
        method();  
    }  
    //常用方法  
    public static void method(){  
        Date date = new Date();  
        Calendar c = Calendar.getInstance();  
        //setTime():使用给定的Date设置此 Calendar 的时间  
        c.setTime(date);  
        //获取Calendar对象  
        Calendar cm = Calendar.getInstance();  
        //getTime():获取当前时间,类似于new Date();  
        Date d = cm.getTime();  
        System.err.println("Calendar获得时间:" + d);  
        System.err.println("new Date创建的时间:" + date);  
        //getTimeInMillis():返回此 Calendar 的时间值,以毫秒为单位。   
        long dl = c.getTimeInMillis();  
        long ddate = cm.getTimeInMillis();  
        System.err.println("毫秒数:" + dl);  
        System.err.println("毫秒数:" + ddate);  
          
        //setTimeInMillis():用给定的 long 值设置此Calendar的当前时间值。   
        long sv = 123456;  
        Calendar sc = Calendar.getInstance();  
        sc.setTimeInMillis(sv);  
        SimpleDateFormat ss = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
        String st = ss.format(sc.getTime());  
        System.err.println(st);  
          
        //get():返回给定日历字段的值。  
        int year = c.get(Calendar.YEAR);  
        System.err.println(year);  
          
        //set():将给定的日历字段设置为给定值  
        c.set(Calendar.YEAR, 2);  
        int y = c.get(Calendar.YEAR);  
        System.err.println(y);//输出2  
          
        //Calendar比较:before(),after(),equals(),compareTo().  
        try{  
            String startTime = "2015-04-12 12:45:39";  
            String endTime = "2015-04-19 12:45:40";  
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
            
            Date startDate = sdf.parse(startTime);  
            Date endDate = sdf.parse(endTime);  
            
            Calendar start = Calendar.getInstance();  
            Calendar end = Calendar.getInstance(); 
            
            start.setTime(startDate);  
            end.setTime(endDate);  
            
            if(start.before(end)){  
                System.err.println("开始时间小于结束时间");  
            }else if(start.after(end)){  
                System.err.println("开始时间大于结束时间");  
            }else if(start.equals(end)){  
                System.err.println("开始时间等于结束时间");  
            }  
            /*  
             * start < end 返回-1  
             * start = end 返回0  
             * start > end 返回1  
             */  
            int count = start.compareTo(end);  
            System.err.println(count);  
              
            //add():为给定的日历字段添加或减去指定的时间量  
            start.add(Calendar.YEAR, -3);  
            System.err.println("原来的时间:" + startTime);  
            System.err.println("add后的时间:" + sdf.format(start.getTime()));  
              
            //toString():转换为字符串  
            System.err.println(start.toString());  
        }catch(Exception e){}  
    }  
    //常用属性  
    @SuppressWarnings("unused")
    public static void param(){  
        Date date = new Date();  
        Calendar c = Calendar.getInstance();  
        c.setTime(date);  
        //Calendar.YEAR:日期中的年  
        int year = c.get(Calendar.YEAR);  
        //Calendar.MONTH:日期中的月,需要加1  
        int mounth = c.get(Calendar.MONTH) + 1;  
        //Calendar.DATE:日期中的日  
        int day = c.get(Calendar.DATE);  
        //Calendar.HOUR:日期中的小时(12小时制)  
        int hour = c.get(Calendar.HOUR);  
        //Calendar.HOUR_OF_DAY:24小时制  
        int HOUR_OF_DAY = c.get(Calendar.HOUR_OF_DAY);  
        //Calendar.MINUTE:日期中的分钟  
        int minute = c.get(Calendar.MINUTE);  
        //Calendar.SECOND:日期中的秒  
        int second = c.get(Calendar.SECOND);  
        System.err.println(year + "-" + mounth + "-" + day + " " + hour + ":" + minute + ":" + second);  
          
        //Calendar.WEEK_OF_YEAR:当前年中星期数  
		int WEEK_OF_YEAR = c.get(Calendar.WEEK_OF_YEAR);  
        //Calendar.WEEK_OF_MONTH:当前月中星期数  
        int WEEK_OF_MONTH = c.get(Calendar.WEEK_OF_MONTH);  
        //Calendar.DAY_OF_YEAR:当前年中的第几天  
        int DAY_OF_YEAR = c.get(Calendar.DAY_OF_YEAR);  
        //Calendar.DAY_OF_MONTH:当前月中的第几天  
        int DAY_OF_MONTH = c.get(Calendar.DAY_OF_MONTH);  
        //Calendar.DAY_OF_WEEK:当前星期的第几天(星期天表示第一天,星期六表示第七天)  
        int  DAY_OF_WEEK = c.get(Calendar.DAY_OF_WEEK);
        System.out.println("DAY_OF_WEEK:"+DAY_OF_WEEK);
        
        //Calendar.DAY_OF_WEEK_IN_MONTH:当前月中的第几个星期  
        int DAY_OF_WEEK_IN_MONTH = c.get(Calendar.DAY_OF_WEEK_IN_MONTH);  
        System.out.println("DAY_OF_WEEK_IN_MONTH:"+DAY_OF_WEEK_IN_MONTH);
          
        try{  
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
            Date ampm = format.parse("2015-04-19 21:59:59");  
            Calendar cc = Calendar.getInstance();  
            cc.setTime(ampm);  
            //AM_PM:HOUR 是在中午之前还是在中午之后,在中午12点之前返回0,在中午12点(包括12点)之后返回1  
            int AM_PM = cc.get(Calendar.AM_PM);  
        }catch(Exception e){}  
          
    }  
}  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值