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

来源:互联网 发布:网页美工和前端工作 编辑:程序博客网 时间:2024/06/10 13:35
<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){}                }  }  


0 0
原创粉丝点击