time类 java_Java8-time类

day01

java8 新的日期和时间API

java8之前的时间和日期

只能依赖java.util.Date类,这个类无法表达日期,只能以毫秒的精度表示时间

Date date = new Date();

System.out.println(date);

//输出结果:Mon Jun 08 10:14:31 CST 2020

Java1.1中的java.util.Calendar也存在类似的问题和缺陷。

DateFormat方法也有一些自己的问题,比如线程不安全。

Java8-LoaclDate、LoaclTime、LocalDateTime

LocalDate

LocalDate的实例是不可变对象,他只提供了简单的日期,并不包含当天的时间信息和时区信息。

通过静态工厂of来创建实例。

public static void main(String[] args) {

LocalDate of = LocalDate.of(2020, 6, 8);

System.out.println(of);

}

//输出结果:2020-06-08

通过LocalDate.now()获得当前日期。

public static void main(String[] args) {

LocalDate now = LocalDate.now();

System.out.println(now);

}

//输出结果:2020-06-08

13067386.html

可在LocalDate中获取到单独的年份,月份,星期几等。也可通过get()方法传入ChronoField枚举来获取到这些元素。

与LocalDate类似,LoaclTime则是来获取并操作时间的。

LoaclTime也可使用of来创建实例

public static void main(String[] args) {

LocalTime now = LocalTime.of(10,36,55);

System.out.println(now);

}

//输出结果:10:36:55

LocalTime.now()获取当前时间。

public static void main(String[] args) {

LocalTime now = LocalTime.now();

System.out.println(now);

}

//输出结果:10:38:32.688

13067386.html

也可以获取当前的时、分、秒。

LocalDateTime是LocalDate二号LocalTime的合体,同时表示了时间和日期,但不带时区。

public static void main(String[] args) {

//这里也可以用重载分别传入date和time

LocalDateTime of = LocalDateTime.of(2020, 6, 8, 10, 22, 10);

System.out.println(of);

}

可以使用toLocalTime/Date方法取到单独的时间和日期。

LocalDateTime of = LocalDateTime.of(2020, 6, 8, 10, 22, 10);

LocalDate localDate = of.toLocalDate();

LocalTime localTime = of.toLocalTime();

System.out.println(localDate);

System.out.println(localTime);

//输出:2020-06-08

// 10:22:10

共有方法

parse():传入日期返回LocalDate实例

//指定格式

LocalDate parse = LocalDate.parse("20191307", DateTimeFormatter.BASIC_ISO_DATE);

//不指定格式需在日期中自带格式

LocalDate parse1 = LocalDate.parse("2007-12-03");

DateTimeFormatter-格式化日期-时间对象(线程安全)。

DateTimeFormatter预定义了像BASIC_ISO_DATE,ISO_DATE_TIME这样的实例,所有的DateTimeFormatter实例都能用于以一定格式来创建特定日期或时间的字符串。

LocalDateTime date = LocalDateTime.of(2020, 6, 8, 10, 22, 10);

String format = date.format(DateTimeFormatter.BASIC_ISO_DATE);

String format1 = date.format(DateTimeFormatter.ISO_DATE_TIME);

System.out.println(format);

System.out.println(format1);

/*输出结果:

20200608

2020-06-08T10:22:10

*/

也可以通过解析日期或时间字符串重新创建该日期对象。

LocalDateTime dateTime = LocalDateTime.of(2020, 6, 8, 10, 22, 10);

LocalDate parse = LocalDate.parse("20200608",DateTimeFormatter.BASIC_ISO_DATE);

System.out.println(parse);

//输出:2020-06-08

可通过ofPattern()方法来自定义格式。

DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("dd~MM~yy");

LocalDate of = LocalDate.of(2020, 6, 8);

String format = of.format(dateTimeFormatter);

System.out.println(format);

//输出:08~06~20

Period和Duration

Period:计算两个日期的间隔。

Duration:计算两个时间之间的间隔

//获取时间1

LocalDateTime now = LocalDateTime.now();

//睡一会

Thread.sleep(1000);

//获取时间2

LocalDateTime now1 = LocalDateTime.now();

//计算相差时间

Duration between = Duration.between(now, now1);

//输出相差秒数

System.out.println(between.getSeconds());

//获取时间日期1

LocalDate now = LocalDate.of(2015,03,12);

//睡一会

Thread.sleep(1000);

//获取日期2

LocalDate now1 = LocalDate.of(2020,06,8);

//计算相差时间

Period between = Period.between(now,now1);

//输出相差几年

System.out.println(between.getYears());

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值