Java_常用类13_Date、DateFormat、SimpleDateFormat类

Date、DateFormat、SimpleDateFormat类

与日期相关的类

A.    java.util.Date类:最常用的功能为获得系统的当前时间。

B.    java.util.Calendar类:与日历相关的类。可以获得日期相关的信息,还可以进行日期的计算。

C.    java.text.DateFormat及其子类:可以对String与Date进行相互的转换。

/*******************************************************************************************/

        Date date = new Date();

        System.out.println(date);// Sat Apr 01 11:32:05 CST 2017

        

        //Date转换为String(格式化)

        DateFormat df = DateFormat.getDateInstance();

        String s = df.format(date);

        System.out.println(s);// 2017-4-1

        

        //String转换为Date(解析)

        s = "2008-8-8";

        try {

            date = df.parse(s);

            System.out.println(date);// Fri Aug 08 00:00:00 CST 2008

        } catch (ParseException e) {

            System.out.println("日期不合法!!!");

        }

/*******************************************************************************************/

        Date date = new Date();

        System.out.println(date);// Sat Apr 01 11:38:09 CST 2017

        

        //Date转换为String(格式化)

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        String s = sdf.format(date);

        System.out.println(s);// 2017-04-01 11:38:09

        

        //String转换为Date(解析)

        s = "2008-8-8 8:8:8";

        try {

            date = sdf.parse(s);

            System.out.println(date);// Fri Aug 08 08:08:08 CST 2008

        } catch (ParseException e) {

            System.out.println("日期不合法!!!");

        }

/*******************************************************************************************/

1.    类 Date 表示特定的瞬间,精确到毫秒。

        A:构造方法

            public Date():创建自 1970 年 1 月 1 日 00:00:00 GMT 到当前的默认毫秒值的日期对象

            public Date(long time):创建自 1970 年 1 月 1 日 00:00:00 GMT 到给定的毫秒值的日期对象

public class DateDemo {

    public static void main(String[] args) {

        Date d1 = new Date();

        System.out.println("d1:" + d1);// d:Sat Apr 01 09:10:13 CST 2017

 

        // long time = System.currentTimeMillis();

        long time = 1000 * 60 * 60; // 1小时

        Date d2 = new Date(time);

        System.out.println("d2:" + d2);// d2:Thu Jan 01 09:00:00 CST 1970

        //不是 01:00:00 是因为我们使用的是北京时间,北京时间是中国采用北京东八时区的区时作为标准时间

    }

}

        B:成员方法

            public long getTime():返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。

            public void setTime(long time):设置此 Date 对象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以后 time 毫秒的时间点。

public class DateDemo {

    public static void main(String[] args) {

        Date d = new Date();

        

        long time = d.getTime();

        System.out.println(time);// 1491009637592

        System.out.println(System.currentTimeMillis());// 1491009637592

 

        System.out.println("d:" + d);// d:Sat Apr 01 09:20:37 CST 2017

        d.setTime(1000);

        System.out.println("d:" + d);// d:Thu Jan 01 08:00:01 CST 1970

    }

}

        C:日期和毫秒值的相互转换

        案例:你来到这个世界多少天了?

2.    DateFormat针对日期进行格式化和针对字符串进行解析的类,但是是抽象类,所以使用其子类SimpleDateFormat

        A: SimpleDateFormat的构造方法:

public SimpleDateFormat():用默认的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。

public SimpleDateFormat(String pattern): 给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。

这个模式字符串该如何写呢? 通过查看API,我们就找到了对应的模式

y 年

M 年中的月份

d 月份中的天数

H 一天中的小时数(0-23)

m 小时中的分钟数

s 分钟中的秒数

yyyy-MM-dd HH:mm:ss                2017-05-01 12:12:12

yyyy年MM月dd日 HH:mm:ss        2017年05月01日 12:12:12

        B:日期和字符串的转换

            a:Date -- String(格式化)

                public final String format(Date date)

            b:String -- Date(解析)

                public Date parse(String source)

public class DateFormatDemo {

    public static void main(String[] args) throws ParseException{

        Date d = new Date();

        // 创建格式化对象

        SimpleDateFormat sdf1 = new SimpleDateFormat();

        String s1 = sdf1.format(d);

        System.out.println(s1);// 17-5-1 上午9:50

        

        // 给定模式

        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyyMMdd HH:mm:ss");

        // DateFormat类的 public final String format(Date date)

        String s2 = sdf2.format(d);

        System.out.println(s2);// 20170501 09:52:15

          

        

        //String -- Date

        String str = "2008-08-08 12:12:12";

        //在把一个字符串解析为日期的时候,请注意格式必须和给定的字符串格式匹配

        SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        Date dd = sdf3.parse(str);

        System.out.println(dd);// Fri Aug 08 12:12:12 CST 2008

    }

}

 

        C:案例:

            制作了一个针对日期操作的工具类。

 

D:案例:

/*

* 算一下你来到这个世界多少年?

* 分析:

*         A:键盘录入你的出生的年月日

*         B:把该字符串转换为一个日期

*         C:通过该日期得到一个毫秒值

*         D:获取当前时间的毫秒值

*         E:D-C得到一个毫秒值

*         F:E的毫秒值转换为年

*             /1000/60/60/24/365

*/

public class MyYearOldDemo {

    public static void main(String[] args) throws ParseException {

        // 键盘录入你的出生的年月日

        Scanner sc = new Scanner(System.in);

        System.out.println("请输入你的出生年月日(格式为yyyy-MM-dd:");

        String line = sc.nextLine();

 

        // 把该字符串转换为一个日期

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

        Date d = sdf.parse(line);

 

        // 通过该日期得到一个毫秒值

        long myTime = d.getTime();

 

        // 获取当前时间的毫秒值

        long nowTime = System.currentTimeMillis();

 

        // D-C得到一个毫秒值

        long time = nowTime - myTime;

 

        // E的毫秒值转换为年

        long day = time / 1000 / 60 / 60 / 24 / 365;

 

        System.out.println("你来到这个世界:" + day + "");

    }

}

 

 

猜你喜欢

转载自www.cnblogs.com/zhaolanqi/p/9238903.html