日期时间API

(JDK8之前) 日期时间相关的API

1.System类中的currentTimeMillis()

返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差,称为时间戳。

用途

获取时间差,精确到毫秒。

long start = System.currentTimeMillis();

long end= System.currentTimeMillis();

时间差:end - start


2. Date类

java.util.Date和子类java.sql.Date

1)java.util.Date类

⭕️ 两个构造器的使用

构造器一

创建一个对应当前时间的Date对象

Date date1 =new Date();

System.out.println(date1);    //Sat Feb 16 16:35:31 GMT+08:00 2019

System.out.println(date1.getTime());    //1550306204104

构造器二

创建指定毫秒数的Date对象

Date date2 =new Date(155030620410L);

System.out.println(date2.toString());    //Sat Nov 30 16:03:40 CST 1974

⭕️ 两个方法的使用

>toString()

显示当前的年、月、日、时、分、秒

System.out.println(date1.toString());    //Sat Feb 16 16:35:31 GMT+08:00 2019

>getTime()

获取当前Date对象对应的毫秒数。(时间戳)

System.out.println(date1.getTime());    //1550306204104


2) java.sql.Date类

java.sql.Date对应着数据库中的日期类型的变量

⭕️ 如何实例化

java.sql.Date date3 =new java.sql.Date(35235325345L);

System.out.println(date3);    //1971-02-13

⭕️ 如何将java.util.Date对象转换为java.sql.Date对象

Date date6 =new Date();

java.sql.Date date7 =new java.sql.Date(date6.getTime());

3. SimpleDateFormat

SimpleDateFormat对日期Date类的格式化和解析

SimpleDateFormat的实例化

使用默认构造器:

SimpleDateFormat sdf =new SimpleDateFormat();

按照指定的方式格式化和解析:调用带参的构造器

SimpleDateFormat sdf1 =new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

1.格式化:日期 --->字符串

Date date =new Date();

System.out.println(date);    // Tue Feb 02 13:09:52 CST 2021

String format = sdf.format(date);

System.out.println(format);    // 21-2-2 下午1:09

2. 解析:格式化的逆过程,字符串 ---> 日期

String str ="19-12-18 上午11:43";

Date date1 = sdf.parse(str);

System.out.println(date1);// Wed Dec 18 11:43:00 CST 2019

4. Calendar(抽象类)

实例化

方式一:创建其子类(GregorianCalendar)的对象

方式二:调用其静态方法getInstance()

                Calendar calendar = Calendar.getInstance();

                // System.out.println(calendar.getClass()); 结果表明它的类仍然是GregorianCalendar

常用方法

1. get()

获取该天是这个 月/年 的第几天

int days = calendar.get(Calendar.DAY_OF_MONTH); 

System.out.println(days);

System.out.println(calendar.get(Calendar.DAY_OF_YEAR));

2. set()

//calendar可变性

calendar.set(Calendar.DAY_OF_MONTH,22);  //将它改为这个月的第22天

days = calendar.get(Calendar.DAY_OF_MONTH);

System.out.println(days);

3. add()

calendar.add(Calendar.DAY_OF_MONTH,-3); // 将它减少为这个月的第22-3=19天

days = calendar.get(Calendar.DAY_OF_MONTH);

System.out.println(days);

4. getTime():    日历类---> Date

Date date = calendar.getTime(); //将日历类改为Date类 

System.out.println(date); 

5. setTime():    Date ---> 日历类

Date date1 =new Date();

calendar.setTime(date1);

days = calendar.get(Calendar.DAY_OF_MONTH);

System.out.println(days);


(JDK8) 日期时间相关的API


JDK8出现之前
JDK8新时间日期API
新时间日期API

LocalDate、LocalTime、LocalDateTime 的使用

1.LocalDateTime相较于LocalDate、LocalTime,使用频率要高

2.类似于Calendar

实例化

1. now():获取当前的日期、时间、日期+时间

LocalDate localDate = LocalDate.now(); // 2021-02-02

LocalTime localTime = LocalTime.now();    //14:49:05.981

LocalDateTime localDateTime = LocalDateTime.now();    //2021-02-02T14:49:05.981

2. of():设置指定的年、月、日、时、分、秒。没有偏移量

LocalDateTime localDateTime1 = LocalDateTime.of(2020, 10, 6, 13, 23, 43); // 2020-10-06T13:23:43

方法

1. getXxx():获取相关的属性 (eg. 这个月的第几天)

System.out.println(localDateTime.getDayOfWeek());    //TUESDAY

System.out.println(localDateTime.getMonth());    //FEBRUARY

System.out.println(localDateTime.getMonthValue());    // 2

System.out.println(localDateTime.getMinute());    //49

2. withXxx():设置相关的属性(不可变性-有返回值接收)

LocalDate localDate1 = localDate.withDayOfMonth(22);

System.out.println(localDate);    //2021-02-02

System.out.println(localDate1);    //2021-02-22

3. plusXxx():将相关的属性加上几个数(不可变性-有返回值接收)

LocalDateTime localDateTime3 = localDateTime.plusMonths(3);

System.out.println(localDateTime);    //2021-02-02T14:49:05.981

System.out.println(localDateTime3);    //2021-05-02T14:49:05.981

4. minusXxx():将相关的属性减去几个数(不可变性-有返回值接收)

LocalDateTime localDateTime4 = localDateTime.minusDays(6);

System.out.println(localDateTime);    //2021-02-02T14:49:05.981

System.out.println(localDateTime4);    //2021-01-27T14:49:05.981

你可能感兴趣的:(日期时间API)