Date的概述
概述:类Date表示特定的瞬间,精确到毫秒。

构造方法:
    Date():默认指当前系统的时间
    Date(long time):根据给定的毫秒值 time ,生成一个时间

代码1:
import java.util.Date;


public class Test1 {
    public static void main(String[] args) {
        //创建Date对象
        Date d = new Date();
        //打印当前系统的时间
        System.out.println(d);
    }
}

java 设计一个类 java设计一个类Date_字段

代码2:
import java.util.Date;


public class Test1 {
    public static void main(String[] args) {
        //通过System类的currentTimeMillis()方法,获得当前系统时间的毫秒值
        long time = System.currentTimeMillis();
        //通过Date(long time)构造方法,将毫秒值转换成时间
        Date d = new Date(time);
        //打印时间
        System.out.println(d);
    }
}

java 设计一个类 java设计一个类Date_java_02

成员方法:
    public long getTime():根据日期对象获取相对应的毫秒值
    public void setTime(long time):设置日期对象的毫秒值

代码:
import java.util.Date;
/*
 * getTime()
 * setTime(long time)
 */

public class Test1 {
    public static void main(String[] args) {
        // 通过System类的currentTimeMillis()方法,获得当前系统时间的毫秒值
        long time = System.currentTimeMillis();
        // 打印获取到当前系统时间的毫秒值
        System.out.println(time);
        // 通过Date(long time)构造方法,将毫秒值转换成时间
        Date d = new Date(time);
        //打印一下,当前毫秒值对应的时间
        System.out.println(d);

        // 获得d对象对应的毫秒值
        long time1 = d.getTime();
        // 打印time1的值
        // 结果:1438758073014
        System.out.println(time1);

        // 给定某个毫秒值:1438758073014,设置Date对象的毫秒值
        long time3 = 1438758073014L;
        d.setTime(time3);
        //打印设置特定毫秒值后的时间对象所表示的时间
        System.out.println(d);


    }
}

java 设计一个类 java设计一个类Date_java 设计一个类_03

DateFormat类格式化简单使用
Date –> String 转换过程叫 格式化。

重点代码:
import java.text.SimpleDateFormat;
import java.util.Date;

/*
 * DateFormat类格式化的简单使用
 * 通过查API可知:
 *  public abstract class DateFormatextends Format
 * DateFormat是一个抽象类,那么我们需要找它的子类SimpleDateFormat来使用
 */
public class Test1 {
    public static void main(String[] args) {
        // 创建一个Date对象,获取当前系统的时间,以默认的形式表现
        Date d = new Date();
        // 表示方式:Wed Aug 05 15:11:31 CST 2015
        System.out.println("格式化起按的表示方式: " + d);
        // 创建格式对象,由于DateFormat是抽象类,直接使用其子类SimpleDateFormat
        SimpleDateFormat sdf = new SimpleDateFormat();

        // 将一个Date类型的对象,转换格式:public final String format(Date date)
        // 从方法定义可知,该方法返回的是一个String类型的字符串
        String s = sdf.format(d);
        // 打印格式化后的时间,格式:15-8-5 下午3:16
        System.out.println("格式化后的表示方式:" + s);
    }
}

结果:

java 设计一个类 java设计一个类Date_java_04

Ps.查看API都需要看什么
1 是否是lang包下,不是的话需要导包
2 看一下这个类或接口的描述
3 看一下这个类的修饰符.
4 想要使用这个类就要学习这个类的构造方法,以便创建对象

如果以后在一个类中你认为它应该具备某个功能,但是在这个类中没有找到
就要去它的父类中找,因为父类有的就相当于子类也具备.

SimpleDateFormat格式化解析指定格式的日期
想把日期转换成我们想要的指定模式需要用到哪个构造方法?
需要用到SimpleDateFormat的带参构造,然后把要指定的模式传入就可以了.

要想指定想要的时间表示模式,那么需要学习一下,如何来表示一些特定的时间模式

日期和时间格式由日期和时间模式 字符串指定。
API中定义了以下模式字母
![这里写图片描述]()

通过对比,如果我们想要的时间模式是:2014年10月20日 14:14:14
那么对应的时间模式字符串应该是   yyyy年MM月dd日 HH:mm:ss

那么,我们现在就用yyyy年MM月dd日 HH:mm:ss这个模式,来表示当前系统的时间

DateFormat:对日期进行格式化的类。提供了对日期进行格式化,和对字符串进行解析的功能。

Date – String
public final String format(Date date)
需要自己指定格式,常见的格式:
yyyy年MM月dd日 HH:mm:ss
yyyy年MM月dd日
HH:mm:ss
yyyy-MM-dd HH:mm:ss

代码:

import java.text.SimpleDateFormat;
import java.util.Date;

/*
 * DateFormat类格式化的简单使用
 * 通过查API可知:
 *  public abstract class DateFormatextends Format
 * DateFormat是一个抽象类,那么我们需要找它的子类SimpleDateFormat来使用
 */
public class Test1 {
    public static void main(String[] args) {
        // 创建一个Date对象,获取当前系统的时间,以默认的形式表现
        Date d = new Date();
        // 表示方式:Wed Aug 05 15:11:31 CST 2015
        System.out.println("格式化起按的表示方式: " + d);
        // 创建格式对象,由于DateFormat是抽象类,直接使用其子类SimpleDateFormat
        SimpleDateFormat sdf = new SimpleDateFormat();

        // 将一个Date类型的对象,转换格式:public final String format(Date date)
        // 从方法定义可知,该方法返回的是一个String类型的字符串
        String s = sdf.format(d);
        // 打印格式化后的时间,格式:15-8-5 下午3:16
        System.out.println("格式化后的表示方式:" + s);

        // 用指定的模式 yyyy年MM月dd日 HH:mm:ss 表示当前系统时间
        // 使用SimpleDateFormat(String pattern)构造方法,指定时间日期模式
        // 定义一个时间模式
        String pattern = "yyyy年MM月dd日 HH:mm:ss";
        // 创建一个时间格式化对象,并为它指定时间模式pattern
        SimpleDateFormat sdf1 = new SimpleDateFormat(pattern);
        // 调用format()方法,将d对象转换成指定的时间模式
        String s1 = sdf1.format(d);
        // 输出格式化后的时间,格式:
        System.out.println("指定特定的时间模式后的表示方式:" + s1);
    }
}

java 设计一个类 java设计一个类Date_java 设计一个类_05

String – Date
public Date parse(String source)
注意:如果是字符串到日期,你指定的格式必须和字符串的格式匹配。

2013-12-12
        yyyy-MM-dd

        2013/11/11
        yyyy/MM/dd

代码:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/*
 *  public Date parse(String source)
 */
public class Test2 {
    public static void main(String[] args) throws ParseException {
        //给定一个时间字符串,转换成系统默认的显示时间的格式
        //如:"2013-13-13 13:13:13"
        String s = "2013-13-13 13:13:13";
        //创建时间格式化对象,并指定与 "2013-13-13 13:13:13"  相同的时间模式
        //"2013-13-13 13:13:13"  这个对应的时间模式是: yyyy-MM-dd HH:mm:ss
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //调用parse(String sourse)方法,将时间字符串,转换成Date类型
        Date d = sdf.parse(s);
        //打印转换后的时间
        System.out.println(d);
    }
}

java 设计一个类 java设计一个类Date_System_06

Calendar类的使用
API中的Calendar public abstract class Calendarextends Objectimplements Serializable, Cloneable, Comparable
这里表明,Calendar类是一个抽象类,我们不能通过new关键字来直接创建对象
但是,在Calendar的成员方法中,有一个public static Calendar getInstance()的静态方法,可以直接通过类名调用,获得一个Calendar的子
类对象.
格式如下:
Calendar c = Calendar.getInstance();

Calendar类中提供了一个get的方法,可以通过定义好的静态常量,分别获取到当前时间的年月日时分秒的各部分,然后进行组合显示

代码:
package cn.itcast_02;

import java.util.Calendar;

/*
 * Calendar:日历类。也是处理时间的。
 * 
 * 在日历字段和Calendar之间提供了转换功能:
 *      从Calendar获取到任意一个日历字段。然后,按照我需要的数据进行组合。
 * 
 * 
 * 
 * 成员方法:
 *      public int get(int field):参数是日历字段。
 */
public class CalendarDemo {
    public static void main(String[] args) {
        // public static Calendar getInstance()
        Calendar c = Calendar.getInstance();// 多态

        // public static final int YEAR 年的字段
        // public int get(int field):参数是日历字段。
        int year = c.get(Calendar.YEAR);
        // System.out.println(year);

        // 月份
        int month = c.get(Calendar.MONTH);
        // 月份 0 - 11
        // System.out.println(month + 1);

        // 日
        int date = c.get(Calendar.DATE);
        // System.out.println(date);

        // 时
        int hour = c.get(Calendar.HOUR_OF_DAY);
        // System.out.println(hour);

        // 分
        int minute = c.get(Calendar.MINUTE);
        // System.out.println(minute);

        // 秒
        int second = c.get(Calendar.SECOND);
        // System.out.println(second);

        // 自己拼接
        String s = year + "年" + (month + 1) + "月" + date + "日" + " " + hour
                + ":" + minute + ":" + ((second>9)?second:"0"+second);
        System.out.println(s);
    }
}

java 设计一个类 java设计一个类Date_java 设计一个类_07

练习题: 计算某一年的2月份有多少天
思路:
A:可以使用Calendar类中的set(int year,int month, int date)方法,给日历对象设定一个指定的日期,例如:2013年3月1日
B:那么我们可以根据日历规则,只要在任意一年的3月1日,往前推一天,就可以得到任意一年的2月份最后一天是多少号
Calendar类也给我们提供给了这么一个方法
public abstract void add(int field,int amount)根据日历的规则,为给定的日历字段添加或减去指定的时间量。

代码:
import java.util.Calendar;

/*
 * 使用Calendar类的方法set和add方法,计算任意一年中的2月份有多少天
 * 
 * public final void set(int year,int month,int date)
 *          设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值。
 *          参数:
 *              year - 用来设置 YEAR 日历字段的值。
 *              month - 用来设置 MONTH 日历字段的值。Month 值是基于 0 的。例如,0 表示 January。
 *              date - 用来设置 DAY_OF_MONTH 日历字段的值。
 *
 *public abstract void add(int field,int amount)
 *          根据日历的规则,为给定的日历字段添加或减去指定的时间量。
 *          参数:
 *              field - 日历字段。
 *              amount - 为字段添加的日期或时间量。
 */
public class Test3 {
    public static void main(String[] args) {
        //需求:求2013年的2月份有多少天?
        //创建日历对象
        Calendar c = Calendar.getInstance(); 
        //将日历对象的时间设置为2013年3月1日
        //注意:这里第二个字段设置为2,是因为月份是从0开始的,即0代表1月,那么2就代表3月了
        c.set(2013, Calendar.MARCH, 1);
        //将设定好的日历日期,往前推一天
        c.add(Calendar.DATE, -1);
        //获得该日历日期中的date字段的值,并打印
        System.out.println(c.get(Calendar.DATE));
    }   
}

java 设计一个类 java设计一个类Date_java 设计一个类_08