Java 时间类

一、Date类

Date:表示特定的瞬间,精确到毫秒
构造方法:
     (1)public Date():根据当前的默认毫秒值创建日期对象
     (2)public Date(long date):根据给定的毫秒值创建日期对象
成员方法:
     (1)public long getTime():获取时间,返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
     (2)public long setTime(long time):设置时间,表示 1970 年 1 月 1 日 00:00:00 GMT 以后 time 毫秒的时间点。
            注意:一般的获取时间,我们更常用:System.currentTimeMillis()方法。

Date类需要掌握的内容
       1、从Date得到一个毫秒值
            getTime()
       2、把一个毫秒值转换成Date
            A:构造方法实现:public Date(long date)
            B:成员方法实现:public long setTime(long time)

二、DateFormat类

程序开发中
                             String ————————>   Date
               日期控件                     转换                           数据库
                             Date    ————————>  String
DateFormat类:日期/时间格式化子类的抽象类,我们使用具体子类:SimpleDateFormat
成员方法:
      1、格式化:Date ——> String
           public final String format(Date date)
      2、解 析:String ——> Date
           public Date parse(String source)
DateFormat类的具体实现类:SimpleDateFormat
SimpleDateFormat类的构造方法
   (1)SimpleDateFormat():默认日期/时间模式
   (2)SimpleDateFormat(String pattern):给定日期/时间模式
           日期/时间模式:
                              年 y
                              月 M
                              日 d
                              时 H
                              分 m
                              秒 s

           Date -- String:格式化
                // 创建日期对象
                Date d = new Date();
                // 创建格式化对象
                //第一种:默认日期/时间模式
                SimpleDateFormat sdf = new SimpleDateFormat();
                public final String format(Date date)
                String s = sdf.format(d);
                System.out.println(s);
                // 第二种:给定日期/时间模式
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
                // public final String format(Date date)
                String s = sdf.format(d);
                System.out.println(s);
           String -- Date:解析
                String str = "2016-09-30 19:29:30";
                //注意:字符串解析为日期的时候,字符串格式必须和给定的字符串格式匹配
                SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                Date dd = sdf2.parse(str);
                System.out.println(dd);

案例自定义封装,日期和字符串相互转换的工具类
      import java.text.ParseException;
      import java.text.SimpleDateFormat;
      import java.util.Date;

      /**
      * 日期和字符串相互转换的工具类
      * @author
      */
      public class DateUtil {
            private DateUtil() {
            }

            /**
            * 方法的作用:把一个日期对象转成一个字符串
            * @param d 被格式化的日期对象
            * @param format 传递过来的要被转换的格式
            * @return 格式化后的字符串
            */
            public static String dateToString(Date d, String format) {
                  // SimpleDateFormat sdf = new SimpleDateFormat(format);
                  // return sdf.format(d);
                  return new SimpleDateFormat(format).format(d);
            }

             /**
             * 方法的作用:把一个字符串解析成一个日期对象
             * @param s 被解析的字符串
             * @param format 传递过来的要被转换的格式
             * @return 解析后的日期对象
             * @throws ParseException
             */
             public static Date stringToDate(String s, String format) throws ParseException {
                   return new SimpleDateFormat(format).parse(s);
             }
        }

三、Calender类

Calendar类:一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等日历字段之间的转换提供了一些方法,并为操作日历字段(如:获得下星期的日期)提供了一些方法。
日历字段:
    (1)public static final int YEAR:指示年的 get 和 set 的字段数字,指示年。
    (2)public static final int MONTH:指示月份的 get 和 set 的字段数字,指示一年中的月。
    (3)public static final int DATE:get 和 set 的字段数字,指示一个月中的某天。
    (4)public static final int HOUR_OF_DAY:get 和 set 的字段数字,指示一天中的小时。
    (5)public static final int MINUTE:get 和 set 的字段数字,指示一小时中的分钟。
    (6)public static final int SECOND:get 和 set 的字段数字,指示一分钟中的秒。
    (7)public static final int DAY_OF_YEAR:get 和 set 的字段数字,指示当前年中的天数。
    (8)public static final int DAY_OF_MONTH:get 和 set 的字段数字,指示一个月中的某天。
    (9)public static final int DAY_OF_WEEK:get 和 set 的字段数字,指示一个星期中的某天。该字段可取的值为 SUNDAY、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY 和 SATURDAY。

常用方法:

    (1)public static Calendar getInstance():使用默认时区和语言环境获得一个日历
           如:Calendar rightNow = Calendar.getInstance();
    (2)public int get(int field):返回给定日历字段的值。日历类中的每个日历字段都是静态的成员变量,并且是int类型。
           // 获取年
           int year = rightNow.get(Calendar.YEAR);
           // 获取月
           int month = rightNow.get(Calendar.MONTH);
           // 获取日
           int date = rightNow.get(Calendar.DATE);
           System.out.println(year + "年" + (month + 1) + "月" + date + "日");
    (3)public void add(int field,int amount):根据给定的日历字段和对应的时间,来对当前的日历进行操作。
           // 5年后的10天前
           c.add(Calendar.YEAR, 5);
           c.add(Calendar.DATE, -10);
    (4)public final void set(int year,int month,int date):设置当前日历的年月日
           c.set(2016, 10, 30);//注意:月是从0开始计数
案例获取任意一年的二月有多少天
      分析:
             A:键盘录入任意的年份
             B:设置日历对象的年月日
                年:A录入的数据
                月:2
                日:1
            C:把时间往前推一天,就是2月的最后一天
            D:获取这一天输出
      代码实现:
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入年份:");
            int year = sc.nextInt();
            Calendar c = Calendar.getInstance();
            c.set(year, 2, 1);
            c.add(Calendar.DATE, -1);
            System.out.println(c.get(Calendar.DATE));

拓展public static Calendar getInstance()方法设计思想扩展
       这种方法的思想:
             abstract class Person {
                   public static Person getPerson() {
                         return new Student();
                   }
             }
             class Student extends Person {
             }

 

posted @ 2016-10-15 23:59  ZYsky  阅读(304)  评论(0编辑  收藏  举报