jdk8之前对时间进行操作一般使用Calendar,在jdk8之后可以直接使用LocalDate/LocalDateTime/LocalTime,提供了方便的api和时间操作
1. 三个时间类区别:
LocalDate => 日期(yyyy-MM-dd)
LocalTime => 具体时间(hh:mm:ss)
LocalDateTime => 日期时间(yyyy-MM-dd hh:mm:ss)
System.out.println(LocalDate.now()); // 2020-04-29
System.out.println(LocalTime.now()); // 21:25:00.994
System.out.println(LocalDateTime.now()); // 2020-04-29T21:25:00.994
2. Jdk8中时间类的格式化
// jdk8之前的日期格式化使用SimpleDateFormat
// jdk8使用DateTimeFormatter来格式化LocalDate等时间类
// 格式化时间为String
@Test
public void test9() {
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime now = LocalDateTime.now();
System.out.println(now.format(df));
}
// 解析String为LocalDateTime类
@Test
public void test6(){
LocalDateTime now = LocalDateTime.now();
DateTimeFormatter par = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
System.out.println(now.parse("2019-01-01 11:12:32",par));
}
3. LocalDate获取昨天、周、月、年等偏移日期
说明: offset —> 0表示当天,1表示偏移天,2表示偏移2天 (根据是向前或者向后偏移的天数)
下面获取的都是yyyy-MM-dd格式,如果需要获取yyyy-MM-dd hh:mm:ss格式,则替换LocalDate为LocalDateTime
-
获取前offset(偏移量)天的日期
/** * 获取前offset天,0表示当天,1表示昨天,2表示前2天 */ public static String dayStart(int offset) { DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd"); LocalDate ld = LocalDate.now().minusDays(offset);