Java8关于日期的处理方法

William
2021-10-13 / 0 评论 / 8 阅读 / 正在检测是否收录...

获取今天的日期

Java 8 中的 LocalDate 用于表示当天日期。和 java.util.Date 不同,它只有日期,不包含时间。当你仅需要表示日期时就用这个类。

LocalDate today = LocalDate.now();
System.out.println("今天的日期: " + today);

// 输出:今天的日期: 2021-10-13

获取年、月、日信息

LocalDate now = LocalDate.now();
int year = now.getYear();
int month = now.getMonthValue();
int day = now.getDayOfMonth();
System.out.println("year:" + year);
System.out.println("month:" + month);
System.out.println("day:" + day);

// 输出
// year:2021
// month:10
// day:13

处理特定日期

我们通过静态工厂方法 now() 非常容易地创建了当天日期,你还可以调用另一个有用的工厂方法 LocalDate.of() 创建任意日期, 该方法需要传入年、月、日做参数,返回对应的LocalDate实例。这个方法的好处是没再犯老API的设计错误,比如年度起始于1900,月份是从0开 始等等。

LocalDate date = LocalDate.of(2018,2,6);
System.out.println("自定义日期:"+date);

// 输出 自定义日期:2018-02-06

获取当前时间,不含日期

LocalTime time = LocalTime.now();
System.out.println("获取当前的时间,不含有日期:" + time);

// 输出:获取当前的时间,不含有日期:16:33:06.914

现在时间进行加减

未来时间:plusHours, plusMinutes, plusSeconds。分别是加小时,加分钟,加秒

过去时间:plus替换成minus。对应减操作

LocalTime time = LocalTime.now();
LocalTime newTime = time.plusHours(3);
System.out.println("现在的时间:" + time);
System.out.println("三个小时后的时间为:" + newTime);

// 输出:
// 现在的时间:16:43:42.642
// 三个小时后的时间为: 19:43:42.642

计算一周后的日期

和上个例子计算3小时以后的时间类似,这个例子会计算一周后的日期。LocalDate日期不包含时间信息,它的plus()方法用来增加天、周、月,ChronoUnit类声明了这些时间单位。由于LocalDate也是不变类型,返回后一定要用变量赋值。

LocalDate today = LocalDate.now();
System.out.println("今天的日期为:" + today);
LocalDate nextWeek = today.plus(1, ChronoUnit.WEEKS);
System.out.println("一周后的日期为:" + nextWeek);

// 输出
// 今天的日期为:2021-10-13
// 一周后的日期为:2021-10-20

可以看到新日期离当天日期是7天,也就是一周。你可以用同样的方法增加1个月、1年、1小时、1分钟甚至一个世纪,ChronoUnit后的WEEKS,换成YEARS,MONTHS,HOURS,MINUTES,DAYS。

那要是想计算,减操作呢?就把 today.plus 改成 today.minus

判断日期是早于还是晚于另一个日期

LocalDate类有两类方法 isBefore() 和 isAfter() 用于比较日期。调用isBefore()方法时,如果给定日期小于当前日期则返回true。

LocalDate today = LocalDate.now();

LocalDate tomorrow = LocalDate.of(2021, 12, 6);
if (tomorrow.isAfter(today)) {
    System.out.println("之后的日期:" + tomorrow);
}

LocalDate yesterday = today.minus(1, ChronoUnit.DAYS);
if (yesterday.isBefore(today)) {
    System.out.println("之前的日期:" + yesterday);
}

// 输出
// 之后的日期:2021-12-06
// 之前的日期:2021-10-12

字符串互转日期类型

LocalDateTime date = LocalDateTime.now();
DateTimeFormatter format1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
//日期转字符串
String str = date.format(format1);
System.out.println("日期转换为字符串:" + str);
DateTimeFormatter format2 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
//字符串转日期
LocalDate date2 = LocalDate.parse(str, format2);
System.out.println("日期类型:" + date2);

// 输出
// 日期转换为字符串:2021-10-13 17:28:51
// 日期类型:2021-10-13
0

评论 (0)

取消