一篇文章弄懂Java8中的时间处理
在Java8中,新增加了新的时间API,旨在解决以前日期和时间类的API存在的一些问题。本文将介绍如何使用Java8中的时间处理,包括时间表示、时间的计算和转换。
时间表示
Java8引入了新的时间类,代表了不同类型的日期时间。下面列出了其中一些常用的时间类:
- LocalDate:只包含日期,即年月日
- LocalTime:只包含时间,即时分秒纳秒
- LocalDateTime:同时包含日期和时间
- Instant:时间戳
- Duration:表示时间上的差距
- Period:表示日期上的差距
下面是一个示例,展示如何创建LocalDate和LocalDateTime对象:
// 创建LocalDate对象
LocalDate date = LocalDate.now();
LocalDate date2 = LocalDate.of(2020, 4, 8);
// 创建LocalDateTime对象
LocalDateTime datetime = LocalDateTime.now();
LocalDateTime datetime2 = LocalDateTime.of(2020, 4, 8, 10, 30, 0);
时间的计算
Java8中的时间计算非常方便,支持链式操作。下面是一些示例:
// 增加一天
LocalDate date = LocalDate.of(2020, 4, 8);
LocalDate tomorrow = date.plusDays(1);
// 增加一周
LocalDate date = LocalDate.of(2020, 4, 8);
LocalDate nextWeek = date.plusWeeks(1);
// 减少一小时
LocalDateTime datetime = LocalDateTime.of(2020, 4, 8, 10, 30, 0);
LocalDateTime timeMinusAnHour = datetime.minusHours(1);
// 计算时间差
LocalDateTime startTime = LocalDateTime.of(2020, 4, 8, 10, 30, 0);
LocalDateTime endTime = LocalDateTime.of(2020, 4, 8, 11, 30, 0);
Duration duration = Duration.between(startTime, endTime);
时间的转换
Java8允许我们将时间对象转换成字符串或者将字符串转换成时间对象。下面是一些示例:
// 将LocalDateTime对象转换成字符串
LocalDateTime datetime = LocalDateTime.of(2020, 4, 8, 10, 30, 0);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String str = datetime.format(formatter);
// 将字符串转换成LocalDateTime对象
String str = "2020-04-08 10:30:00";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime datetime = LocalDateTime.parse(str, formatter);
示例
下面是一个完整的示例,演示如何计算两个日期之间的天数:
LocalDate startDate = LocalDate.of(2020, 4, 8);
LocalDate endDate = LocalDate.of(2020, 4, 16);
Period period = Period.between(startDate, endDate);
int days = period.getDays();
System.out.println(days);
输出结果为:8。
另一个示例,演示如何将时间戳转换成LocalDateTime对象:
long timestamp = System.currentTimeMillis();
Instant instant = Instant.ofEpochMilli(timestamp);
LocalDateTime datetime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
System.out.println(datetime);
输出结果为:当前时间的LocalDateTime对象。
总结
在Java8中,时间处理变得更加简便和灵活。通过使用新的时间类,我们可以更加方便地表示和计算时间,并且将时间对象和字符串之间进行转换。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:一篇文章弄懂Java8中的时间处理 - Python技术站