CoreJava学习2――Date处理与计算

一、Date类和DateFormat类

1、Date

用来描述日期,封装了日期及时间的信息。已被Calendar取代,内部封装了一个毫秒值。

       Date date=new Date();

       //输出Sat Jun 22 14:51:57 CST 2013

       //这是Date类重写了Object的toString()方法

       System.out.println(date);

       long time = date.getTime();//得到1970年以来的毫秒值

       date.setTime(time+24*3600*1000);//设置时间

2、SimpleDateFormat类

用于实现Date对象和字符串表示的日期信息间的转换。构造方法如下:

SimpleDateFormat(String pattern):参数pattern用于说明格式的模式匹配字符串。

  如: SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");

       System.out.println(sdf.format(date));//2013年06月23日

parse转换方法:

和format方法相反,parse方法用于按照特定格式将表示时间的字符串转换为Date对象。

       String dateStr = "2013-06-08";

       String pattern = "yyyy-MM-dd";

       SimpleDateFormat sda = new SimpleDateFormat(pattern);

       //如果不匹配这抛出异常

       Date dat = sda.parse(dateStr);

       System.out.println(date);//Sun Jun 23 15:40:50 CST 2013

3、DateFormat类

DateFormat是SimapleDateFormat的父类,其工厂方法getXXXInstance可以返回 根据地域信息的默认格式的DateFormat对象。

       Date d = new Date();

       DateFormat df1=DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.US);

       System.out.println(df1.format(date));//Jun 23, 2013

       DateFormat df2=DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.CHINA);

       System.out.println(df2.format(date));//2013-6-23


------------------------------------------------------------------------

二、Calendar类和GregorianCalendar类

1、Calendar

   Calendar类用于封装日历信息,其主要作用在于其方法可以对时间分量进行运算。    

   常用于计算日期,这个类的设计不存在千年虫问题。  

Calendar是抽象类,其具体子类针对不同国家的日历系统,其中应用最广泛的是GregorianCalendar(格里高利历),对应世界上绝大多数国家地区使用的标准日历系统。

   Calendar c = Calendar.getInstance();

通常使用静态方法来获得对象,是根据系统的地域信息返回不同的Calendar类的实现。

Calendar与简单工厂模式


2、Calendar分量运算

Calendar通过set和get方法对各个时间分量尽心设置及获取。

c.set(Calendar.YEAR,2013);//2013就是时间分量

   例子:

     

/** 使用工厂模式创建一个Calendar实例,该实例代表当前视同时间。*/
       Calendar calendar = Calendar.getInstance();
       /** 设置日期的方法*/
       calendar.set(Calendar.YEAR, 2013);
       calendar.set(Calendar.MONTH, calendar.MAY);
       //五月,也可以使用数字,但是都是以0开始,这里就要使用4
       //calendar.set(Calendar.MONTH, 4);       
       calendar.set(Calendar.DATE , 15);//第十五天
       calendar.set(Calendar.HOUR , 10);//默认是现在是上午还是下午
       //calendar.set(Calendar.HOUR_OF_DAY , 10);//使用24小时制就不管上下午
       calendar.set(Calendar.MINUTE , 20);
       calendar.set(Calendar.SECOND , 50);
       //这样就创建了一个日期
       //转换成date日期
       Date date = calendar.getTime();
       System.out.println(new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss").format(date));
       /** 通过Calendar获取对应的时间 */
       int month = calendar.get(Calendar.MONTH);
       int year = calendar.get(Calendar.YEAR);
       int day = calendar.get(Calendar.DATE);
       System.out.println("时间是:"+year+"年"+(month+1)+"月"+day+"日");
       /** 计算 */
       //计算日期统一用add方法,会自动跨年,跨月等等
       calendar.add(Calendar.MONTH, 1);//一个月以后的时间,加一个月。
       //同理,年,天也一样。如果是减月,用负数。
       calendar.add(Calendar.MONTH, -1);
       calendar.add(Calendar.MONTH,-8);
       System.out.println(new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss").format(calendar.getTime()));
       //2012年09月15日 22:20:50
       calendar.add(Calendar.DATE,31);
       System.out.println(new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss").format(calendar.getTime()));
       //2012年10月16日 22:20:50
       calendar.add(Calendar.DATE,360);
       System.out.println(new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss").format(calendar.getTime()));
       //2013年10月11日 22:20:50
       //自动按照日历累加。
       /** 获取指定内容允许的最大值 */
       int maxDate = calendar.getActualMaximum(Calendar.DATE);
       System.out.println(maxDate);//这个月最多有多少天 31
       //这一年有多少天
       System.out.println(calendar.getActualMaximum(Calendar.DAY_OF_YEAR));



你可能感兴趣的:(java,Date,calendar,DateFormat)