JDK8 新增的日期时间类(常用)

详解 JDK8 新增的日期时间类

这些新增的日期时间API都在 java.time包下

LocalDate、LocalTime、LocalDateTime

获取时间对象:

  • 通过静态方法:now()(获取的时间是系统当前的时间)
  • 通过静态方法:of()(方法参数可以指定时间)
  1. LocalDateTime:获取年月日时分秒等于LocalDate + LocalTime
// LocalDateTime:获取年月日时分秒等于 LocalDate + LocalTime
// 例如:2021-02-11T15:39:04.461
LocalDateTime localDateTime = LocalDateTime.now();
// 2021-02-11T15:39:04.461
System.out.println(localDateTime);
LocalDate localDate = localDateTime.toLocalDate();
LocalTime localTime = localDateTime.toLocalTime();
// 2021-02-11 15:39:04.461
System.out.println(localDate + " " + localTime );
  1. LocalDate:获取年月日
// LocalDate:获取年月日
LocalDate localDate1 = LocalDate.now();
// 2021-02-11
System.out.println(localDate1);
  1. LocalTime:获取时分秒
// LocalTime:获取时分秒
LocalTime localTime1 = LocalTime.now();
// 15:41:26.223
System.out.println(localTime1);

Instant——时间戳类

  1. 获取对象的方法:
  • now()

注意: 默认获取出来的是当前的美国时间,
和我们相差八个小时(因为我们在东八时区)

  1. 获取系统默认时区时间的方法:
  • atZone() :方法的参数是要一个时区的编号(可以通过时区编号类获取ZonedDateTime类的对象)
//从1970 - 01 - 01 00:00:00 截止到当前时间的毫秒值
long l0 = System.currentTimeMillis();
System.out.println(l0);
long time = new Date().getTime();
System.out.println(time);

 //JDK1.8 Instant 时间戳类从1970 -01 - 01 00:00:00 截止到当前时间的毫秒值
Instant now1 = Instant.now();

//toEpochMilli():从1970 -01 - 01 00:00:00 截止到当前时间间隔的毫秒值
long l1 = now1.toEpochMilli();
// 1613030503057
System.out.println(l1);

//获取从1970 -01 - 01 00:00:00 截止到当前时间间隔的秒值
long epochSecond = now1.getEpochSecond();
// 1613030503
System.out.println(epochSecond);

DateTimeFormatter——解析和格式化日期或时间的类

注:SimpleDateFormat 线程不安全的,而 DateTimeFormatter 线程安全的

常用API:

  • 静态方法 ofPattern("yyyy-MM-dd")
    通过给定格式获取对象
  • format():
    把一个日期对象的默认格式 格式化成指定的格式的字符串
// 指定格式 静态方法 ofPattern()
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
// DateTimeFormatter 自带的格式方法
LocalDateTime now = LocalDateTime.now();

// DateTimeFormatter 把日期对象,格式化成字符串
String strDate1 = formatter.format(now);
// 2021-02-11 16:00:50
System.out.println(strDate1);

// LocalDateTime 自带的格式化方法
String strDate2 = now.format(formatter);
// 2021-02-11 16:00:50
System.out.println(strDate2);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值