日期时间API

学习目标

  • 掌握 java.lang.System类的currentTimeMillis();java.util.Date类;java.sql.Date类;java.text.SimpleDateFormat类 ;java.util.Calendar(日历)类。
  • 掌握常用的JDK8中新日期时间API 

学习内容

1. java.lang.System类

System类提供的public static long currentTimeMillis()用来返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。

此方法适于计算时间差。

public class TimeTest {
    @Test
    public void test(){
        long l = System.currentTimeMillis();
        System.out.println(l);
    }
}

2. java.util.Date类

两个构造器:

  • Date():使用无参构造器创建的对象可以获取本地当前时间。
public class TimeTest {
    @Test
    public void test(){
        Date date = new Date();
        System.out.println(date);
    }
}

结果:Fri May 14 20:30:50 CST 2021

  • Date(long date)
public class TimeTest {
    @Test
    public void test(){
        Date date = new Date(899999777666l);
        System.out.println(date);
    }
}

结果:Thu Jul 09 23:56:17 CST 1998

两个方法:

  • getTime():返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
public class TimeTest {
    @Test
    public void test() {
        Date date = new Date();
        long time = date.getTime();
        System.out.println(time);
    }
}

结果:1620995676420

  • toString():把此 Date 对象转换为以下形式的 String: dow mon ddhh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat),zzz是时间标准。
public class TimeTest {
    @Test
    public void test() {
        Date date = new Date();
        System.out.println(date.toString());
    }

}

结果:Fri May 14 20:36:09 CST 2021

3. java.sql.Date类(extends java.util.Date)

java.util.Date转化成 java.sql.Date

public class TimeTest {
    @Test
    public void test() {
        Date date = new Date();
        java.sql.Date date1 = new java.sql.Date(date.getTime());
        System.out.println(date1);
    }
}

结果:2021-05-15

4. java.text.SimpleDateFormat类 

格式化:

public class TimeTest {
    @Test
    public void test() {
        Date date = new Date();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 EEE HH:mm:ss");
        String format = simpleDateFormat.format(date);
        System.out.println(format);
    }

}

结果:2021年05月15日 星期六 12:31:25

解析:

    public void test()  {
        Date date = new Date();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 EEE HH:mm:ss");
        //String format = simpleDateFormat.format(date);
        Date date1 = null;
        try {
            date1 = simpleDateFormat.parse("2021年05月15日 星期六 12:31:25");
        } catch (ParseException e) {
            e.printStackTrace();
        }
//        System.out.println(format);
        System.out.println(date1);
    }
}

结果:Sat May 15 12:31:25 CST 2021

5. java.util.Calendar(日历)类 :Calendar是一个抽象基类,主用用于完成日期字段之间相互操作的功能。

获取一个Date对象

public class TimeTest {
    @Test
    public void test()  {
        Calendar date = Calendar.getInstance();//获得一个Date对象
        Date time = date.getTime();
        System.out.println(time);
    }
}

结果:Sat May 15 12:48:13 CST 2021

方法的测试:

public class TimeTest {
    @Test
    public void test()  {
        Calendar date = Calendar.getInstance();//获得一个Date对象
        date.setTime(new Date());
        System.out.println(date);
        date.add(Calendar.HOUR,2);
        System.out.println(date);
        date.set(Calendar.DAY_OF_MONTH,9);
        System.out.println(date);
        date.add(Calendar.MARCH,3);
        System.out.println(date);
    }
}

JDK8中新日期时间API

LocalDate、LocalTime、LocalDateTime (用的多)类是其中较重要的几个类,它们的实例是不可变的对象,分别表示使用 ISO-8601日历系统的日期、时间、日期和时间。它们提供了简单的本地日期或时间,并不包含当前的时间信息,也不包含与时区相关的信息。

获取当前时间

public class TimeTest {
    @Test
    public void test() {
        LocalDate localDate = LocalDate.now();
        LocalTime localTime = LocalTime.now();
        LocalDateTime localDateTime = LocalDateTime.now();
        System.out.println(localDate);
        System.out.println(localTime);
        System.out.println(localDateTime);
    }
}

 结果:2021-05-15
            13:30:43.171
            2021-05-15T13:30:43.171

获取指定时间对象

public class TimeTest {
    @Test
    public void test() {
//        LocalDate localDate = LocalDate.now();
//        LocalTime localTime = LocalTime.now();
//        LocalDateTime localDateTime = LocalDateTime.now();
        LocalDateTime of = LocalDateTime.of(2021, 5, 15, 13, 35);
//        System.out.println(localDate);
//        System.out.println(localTime);
//        System.out.println(localDateTime);
        System.out.println(of);
    }

结果:2021-05-15T13:35

get方法:

public class TimeTest {
    @Test
    public void test() {
        LocalDate localDate = LocalDate.now();
        LocalTime localTime = LocalTime.now();
        LocalDateTime localDateTime = LocalDateTime.now();
        LocalDateTime of = LocalDateTime.of(2021, 5, 15, 13, 35);
//        System.out.println(localDate);
//        System.out.println(localTime);
//        System.out.println(localDateTime);
//        System.out.println(of);
        System.out.println(localDateTime.getDayOfMonth());
        System.out.println(localDateTime.getDayOfWeek());
        System.out.println(localDateTime.getHour());
        System.out.println(localDateTime.getDayOfYear());
        System.out.println(localDateTime.getMinute());
    }

结果:

15
SATURDAY
13
135
40

with方法

public class TimeTest {
    @Test
    public void test() {
        LocalDate localDate = LocalDate.now();
        LocalTime localTime = LocalTime.now();
        LocalDateTime localDateTime = LocalDateTime.now();
        LocalDateTime of = LocalDateTime.of(2021, 5, 15, 13, 35);
        LocalDateTime localDateTime1 = localDateTime.withDayOfMonth(8);
        System.out.println(localDateTime);//体现不可变性
        System.out.println(localDateTime1);
    }
}

结果:

2021-05-15T13:43:45.476
2021-05-08T13:43:45.476

plus方法:

public class TimeTest {
    @Test
    public void test() {
        LocalDate localDate = LocalDate.now();
        LocalTime localTime = LocalTime.now();
        LocalDateTime localDateTime = LocalDateTime.now();
        LocalDateTime of = LocalDateTime.of(2021, 5, 15, 13, 35);
        LocalDateTime localDateTime1 = localDateTime.plusDays(4);
        System.out.println(localDateTime);//体现不可变性
        System.out.println(localDateTime1);
    }
}

结果:

2021-05-15T13:48:21.992
2021-05-19T13:48:21.992

minus方法:

public class TimeTest {
    @Test
    public void test() {
        LocalDate localDate = LocalDate.now();
        LocalTime localTime = LocalTime.now();
        LocalDateTime localDateTime = LocalDateTime.now();
        LocalDateTime of = LocalDateTime.of(2021, 5, 15, 13, 35);
        LocalDateTime localDateTime1 = localDateTime.minusDays(5);
        System.out.println(localDateTime);
        System.out.println(localDateTime1);
    }
}

结果:

2021-05-15T13:51:07.113
2021-05-10T13:51:07.113

Instant类

获得对象:

public class TimeTest {
    @Test
    public void test() {
        Instant now = Instant.now();
        System.out.println(now);//按照本初子午线的时间
        OffsetDateTime offsetDateTime = now.atOffset(ZoneOffset.ofHours(8));
        System.out.println(offsetDateTime);
    }
}

结果:

2021-05-15T05:58:03.197Z
2021-05-15T13:58:03.197+08:00

方法:

public class TimeTest {
    @Test
    public void test() {
        Instant now = Instant.now();
        System.out.println(now);//按照本初子午线的时间
        OffsetDateTime offsetDateTime = now.atOffset(ZoneOffset.ofHours(8));
        System.out.println(offsetDateTime);
        long l = now.toEpochMilli();
        System.out.println(l);
        Instant instant = Instant.ofEpochMilli(1621058437650l);
        System.out.println(instant);
    }
}

结果:

2021-05-15T06:02:41.769Z
2021-05-15T14:02:41.769+08:00
1621058561769
2021-05-15T06:00:37.650Z

java.time.format.DateTimeFormatter 类

public class TimeTest {
    @Test
    public void test() {
        LocalDateTime localDateTime = LocalDateTime.now();
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT);
        String format = dateTimeFormatter.format(localDateTime);
        System.out.println(format);
        TemporalAccessor parse = dateTimeFormatter.parse("21-5-15 下午2:14");
        System.out.println(parse);
        DateTimeFormatter dateTimeFormatter1 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG);
        String format1 = dateTimeFormatter1.format(localDateTime);
        System.out.println(format1);
        TemporalAccessor parse1 = dateTimeFormatter1.parse("2021年5月15日 下午02时16分45秒");
        System.out.println(parse1);

    }
}

结果:

21-5-15 下午2:17
{},ISO resolved to 2021-05-15T14:14
2021年5月15日 下午02时17分21秒
{},ISO resolved to 2021-05-15T14:16:45

自定义:

public class TimeTest {
    @Test
    public void test() {
        LocalDateTime localDateTime = LocalDateTime.now();
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
        String format = dateTimeFormatter.format(localDateTime);
        System.out.println(format);
    }
}

结果:

2021年05月15日

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值