我是靠谱客的博主 任性季节,最近开发中收集的这篇文章主要介绍Java8 LocalDate,LocalDateTime的简单使用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Java8中新增的日期时间类

在Java8中新增了日期时间对象。
LocalDate:有关日期的类。
LocalTime:有关时间的类。
LocalDateTime:上两个的综合。

LocalDate和Date比较
  1. 之前的Date对象不是线程安全的,而LocalDate,LocalTime,LocalDateTime是线程安全的,
  2. LocalDate,LocalTime,LocalDateTime中直接包含了有关时间的一些计算方法,比如加日期减日期等。
  3. Java8之前做date计算的话需要用到Calendar类,Calendar中获取星期几的方法:calendar.get(Calendar.DAY_OF_WEEK),得到1-7,但是1对应的是周日,2对应的是周1,。。。7对应的是周6。而在Java8的定义类DayOfWeek枚举类,对应星期几,LocalDate中可以直接获取到星期几:localDate.getDayOfWeek().getValue(),得到也是1-7,它锁对应的就是周一到周日。
举一些小栗子

LocalDate和LocalDateTime的简单使用

LocalDate localDate = LocalDate.now();
System.out.println(localDate);
LocalDateTime localDateTime = LocalDateTime.now(ZoneOffset.of("+8"));
System.out.println(localDateTime);
//
localDateTime=LocalDateTime.parse("2020-01-13 00:00:12", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
//
//
System.out.println(localDateTime);
String aaa = localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss:SSS"));
System.out.println(aaa);
Date date = Date.from(localDateTime.toInstant(ZoneOffset.of("+8")));
System.out.println(date);
localDateTime = date.toInstant().atOffset(ZoneOffset.of("+8")).toLocalDateTime();
System.out.println(localDateTime);
localDate = date.toInstant().atOffset(ZoneOffset.of("+8")).toLocalDate();
localDateTime.toInstant(ZoneOffset.of("+8")).toEpochMilli();
System.out.println(localDate);
localDate = LocalDate.parse("2020-04-13");
System.out.println(localDate.getDayOfWeek().getValue());

再说个使用Date和LocalDate获取某个时间之后的周一的实现方式:
1.使用Date,需要用到Calendar类

/**
* Date:时间
* week 0/n/-n:当前周/n周以后/n周以前
*/
public static Date getNextMonday(Date date, int week) {
Calendar c = Calendar.getInstance();
c.setTime(date);
int day_of_week = c.get(Calendar.DAY_OF_WEEK) - 1;
if (day_of_week == 0) {
day_of_week = 7;
}
day_of_week = day_of_week-1;
if (week == 0) { //本周一
c.add(Calendar.DATE, -day_of_week);
} else if (week > 0) { //week周后的周一
c.add(Calendar.DATE, -day_of_week + 7 * week);
} else {//week周前的周一
c.add(Calendar.DATE, -day_of_week + 7 * week);
}
return DateUtil.fomatDate1(DateUtil.getMorningDay(c.getTime()));
}
//DateUtil.getMorningDay:是获取该时间0点的方法

1.使用LocalDate

LocalDate setTime = LocalDate.now(ZoneOffset.of("+8"));
//Date转LocalDate
Date date1 = new Date();
setTime = date1.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
localDate = LocalDate.of(setTime.getYear(),setTime.getMonth(),setTime.getDayOfMonth());
int week = localDate.getDayOfWeek().getValue();
//获取今天是周几:1-7对应周一到周期
LocalDate localDate2 = localDate.plusDays(7*num-week+1); //(7-week+1)+7*(num-1)=7*num-week+1
获取周一+1,获取周二+2
System.out.println("今天是"+localDate+",两周后的周一是"+localDate2);
//因为LocalDate没有直接转Date的方法,所以要先把LocalDate转成LocalDateTime再转成Date。
Date date2 = Date.from(localDate2.atTime(0,0,0).atZone(ZoneId.systemDefault()).toInstant());
System.out.println(date2);

相比较下LocalDate的使用简单一些。

最后

以上就是任性季节为你收集整理的Java8 LocalDate,LocalDateTime的简单使用的全部内容,希望文章能够帮你解决Java8 LocalDate,LocalDateTime的简单使用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部