最新消息:vps推荐

java8 LocalDate、LocalTime、LocalDateTime和DateTimeFormatter使用实例

java Terry 401浏览 0评论

java8之前大家用的是Date类、Calendar类,Date既包含日期也包含时间使用起来十分不方便,java8新的java.time.*包带来了新的类库,下面一起看看吧

在java8中,java.time包下主要包含下面几个主要的类:

Instant:时间戳
Duration:持续时间,时间差
LocalDate:只包含日期,比如:2019-10-20
LocalTime:只包含时间,比如:23:12:10
LocalDateTime:包含日期和时间,比如:2019-10-20 23:14:21
Period:时间段
ZoneOffset:时区偏移量,比如:+8:00
ZonedDateTime:带时区的时间
Clock:时钟,比如获取目前美国纽约的时间

1、LocalDate使用实例

LocalDate todayDate = LocalDate.now();
System.out.println("今天日期:"+todayDate); //今天日期:2019-06-04

LocalDate firstDay = todayDate.with(TemporalAdjusters.firstDayOfMonth());
System.out.println("当月第一天:"+firstDay); //当月第一天:2019-06-01

//另一种写法
LocalDate firstDay2 = todayDate.withDayOfMonth(1);
System.out.println("当月第一天:"+firstDay2); //当月第一天:2019-06-01

//取当月最后一天
LocalDate lastDay = todayDate.with(TemporalAdjusters.lastDayOfMonth());
System.out.println("当月最后一天:"+lastDay); //当月最后一天:2019-06-30

//当前日期+1天
LocalDate tomorrow = todayDate.plusDays(1);
System.out.println("明天:"+tomorrow); //明天:2019-06-05

//当前日期-1天
LocalDate yesterday = todayDate.plusDays(-1);
System.out.println("昨天:"+yesterday); //昨天:2019-06-03

//判断是否是闰年
System.out.println(todayDate.isLeapYear()); //false

//指定日期
System.out.println(LocalDate.of(2019,6,15)); //2019-06-15
System.out.println(LocalDate.parse("2019-06-15")); //2019-06-15

2、LocalTime使用实例

//获取当前时间
LocalTime nowTime = LocalTime.now();
System.out.println("当前时间:"+nowTime); //当前时间:11:16:30.156

//不显示毫秒
System.out.println(LocalTime.now().withNano(0)); //11:16:30

//指定时间
System.out.println(LocalTime.of(12,30,1)); //12:30:01
System.out.println(LocalTime.parse("12:30:01")); //12:30:01

3、日期时间比较、获取不同时区

//时间、日期比较 isAfter(),isBefore方法
LocalDate date1 = LocalDate.now();
LocalDate date2 = LocalDate.of(2018,6,4);
System.out.println(date1.isAfter(date2)); //true
LocalTime time1 = LocalTime.now();
LocalTime time2 = LocalTime.of(1,30,1);
System.out.println(time1.isAfter(time2)); //true

//处理不同时区
ZoneId defaultZone = ZoneId.systemDefault();
System.out.println(defaultZone); //Asia/Shanghai
//查看纽约当前时间
LocalDateTime localDateTime = LocalDateTime.now(ZoneId.of("America/New_York"));
System.out.println(localDateTime); //2019-06-03T23:36:13.749
System.out.println(LocalDateTime.now()); //2019-06-04T11:36:13.751 当前时区时间

//计算日期之间差值
LocalDate d = LocalDate.now(); //2019-06-04
LocalDate d2 = LocalDate.of(2019,5,1);
Period period = Period.between(d2,d);
System.out.println(period.getDays()); //3
System.out.println(period.getMonths()); //1
System.out.println(period.getYears()); //0
System.out.println(d2.until(d, ChronoUnit.DAYS)); //34

4、格式化日期时间

//时间日期解析、格式化
DateTimeFormatter dtf = DateTimeFormatter.BASIC_ISO_DATE;
System.out.println(LocalDate.parse("20180604",dtf)); //2018-06-04
DateTimeFormatter dtf2 = DateTimeFormatter.ofPattern("yyyy MM dd");
System.out.println(LocalDate.parse("2018 06 04",dtf2)); //2018-06-04

DateTimeFormatter dtf3 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
System.out.println(LocalDateTime.parse("2019-05-01 23:23:00",dtf3));//2019-05-01T23:23
System.out.println(dtf3.format(LocalDateTime.now()));

 

转载请注明:Terry's blog » java8 LocalDate、LocalTime、LocalDateTime和DateTimeFormatter使用实例

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址