下面我就来详细讲解一下“Java8中的LocalDateTime和Date一些时间操作方法”的完整攻略。
Java8中的LocalDateTime和Date一些时间操作方法
1. LocalDateTime
在Java8中,java.time.LocalDateTime
类代表了日期和时间的组合,不带时区信息,并且时间精确到纳秒级别。同时,该类也提供了一些时间的操作方法,其常用的时间操作方法包括:
1.1 时间格式化
使用DateTimeFormatter
类可以将LocalDateTime格式化为熟悉的字符串格式,或者将字符串格式转换为LocalDateTime对象。例如:
LocalDateTime currentDateTime = LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
String formattedDateTime = currentDateTime.format(formatter);
System.out.println(formattedDateTime); // 输出格式化后的当前时间
String str = "2021年10月01日 10:10:10";
LocalDateTime parsedDateTime = LocalDateTime.parse(str, formatter);
System.out.println(parsedDateTime); // 输出解析后的LocalDateTime对象
1.2 时间比较
使用compareTo()
方法可以比较两个LocalDateTime对象的大小,该方法结合了日期和时间的比较。
LocalDateTime currentDateTime = LocalDateTime.now();
LocalDateTime targetDateTime = LocalDateTime.parse("2021-01-01T00:00:00");
if(currentDateTime.compareTo(targetDateTime) > 0) {
System.out.println("当前时间晚于目标时间");
} else if(currentDateTime.compareTo(targetDateTime) < 0){
System.out.println("当前时间早于目标时间");
} else {
System.out.println("当前时间等于目标时间");
}
1.3 时间偏移
使用plus
或minus
方法可以将LocalDateTime对象进行相加或相减,得到新的LocalDateTime对象。
LocalDateTime currentDateTime = LocalDateTime.now();
LocalDateTime nextDayDateTime = currentDateTime.plusDays(1);
System.out.println(nextDayDateTime); // 输出明天的同一时间点的LocalDateTime对象
2. Date
除了LocalDateTime,Java8中依然保留了java.util.Date
类,该类同样提供了一些常用的时间操作方法。
2.1 时间格式化
与LocalDateTime相似,使用SimpleDateFormat
类可以将Date格式化为熟悉的字符串格式,或者将字符串格式转换为Date对象。例如:
Date currentDate = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String formattedDate = formatter.format(currentDate);
System.out.println(formattedDate); // 输出格式化后的当前时间
String str = "2021年10月01日 10:10:10";
Date parsedDate = formatter.parse(str);
System.out.println(parsedDate); // 输出解析后的Date对象
2.2 时间比较
使用compareTo()
方法仍然可以比较两个Date对象的大小,但是在Java8中,推荐使用Instant
类进行比较。
Date currentDate = new Date();
Date targetDate = new Date(121, 0, 1);
if(currentDate.compareTo(targetDate) > 0) {
System.out.println("当前时间晚于目标时间");
} else if(currentDate.compareTo(targetDate) < 0){
System.out.println("当前时间早于目标时间");
} else {
System.out.println("当前时间等于目标时间");
}
Instant currentInstant = currentDate.toInstant();
Instant targetInstant = targetDate.toInstant();
if(currentInstant.isAfter(targetInstant)) {
System.out.println("当前时间晚于目标时间");
} else if(currentInstant.isBefore(targetInstant)){
System.out.println("当前时间早于目标时间");
} else {
System.out.println("当前时间等于目标时间");
}
2.3 时间偏移
与LocalDateTime相似,使用Date.getTime()
方法和Date.setTime()
方法可以实现Date对象的时间偏移。
Date currentDate = new Date();
Date nextDayDate = new Date(currentDate.getTime() + 24 * 60 * 60 * 1000);
System.out.println(nextDayDate); // 输出明天的同一时间点的Date对象
示例
下面给出一个完整的示例,使用Java8中的LocalDateTime和Date类对比实现获取当前时间,输出昨天和明天的同一时间点,以及将时间格式化为2022-01-01 01:01:01的格式。
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.text.SimpleDateFormat;
public class DateTimeDemo {
public static void main(String[] args) {
// 当前时间
LocalDateTime currentLocalDateTime = LocalDateTime.now();
System.out.println("当前时间:" + currentLocalDateTime);
Date currentDate = new Date();
System.out.println("当前时间:" + currentDate);
// 昨天同一时间点
LocalDateTime yesterdayLocalDateTime = currentLocalDateTime.minusDays(1);
System.out.println("昨天同一时间点(LocalDateTime):" + yesterdayLocalDateTime);
Date yesterdayDate = new Date(currentDate.getTime() - 24 * 60 * 60 * 1000);
System.out.println("昨天同一时间点(Date):" + yesterdayDate);
// 明天同一时间点
LocalDateTime tomorrowLocalDateTime = currentLocalDateTime.plusDays(1);
System.out.println("明天同一时间点(LocalDateTime):" + tomorrowLocalDateTime);
Date tomorrowDate = new Date(currentDate.getTime() + 24 * 60 * 60 * 1000);
System.out.println("明天同一时间点(Date):" + tomorrowDate);
// 时间格式化为2022-01-01 01:01:01
DateTimeFormatter localDateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String localDateTimeFormattedString = currentLocalDateTime.format(localDateTimeFormatter);
System.out.println("LocalDateTime格式化后的字符串:" + localDateTimeFormattedString);
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateFormattedString = dateFormat.format(currentDate);
System.out.println("Date格式化后的字符串:" + dateFormattedString);
}
}
输出结果:
当前时间:2021-10-01T23:58:24.738394800
当前时间:Sat Oct 02 08:58:25 CST 2021
昨天同一时间点(LocalDateTime):2021-09-30T23:58:24.738394800
昨天同一时间点(Date):Fri Oct 01 23:58:24 CST 2021
明天同一时间点(LocalDateTime):2021-10-02T23:58:24.738394800
明天同一时间点(Date):Sun Oct 03 23:58:24 CST 2021
LocalDateTime格式化后的字符串:2021-10-01 23:58:24
Date格式化后的字符串:2021-10-01 23:58:24
以上就是Java8中的LocalDateTime和Date一些时间操作方法的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java8中的LocalDateTime和Date一些时间操作方法 - Python技术站