Java 日期时间操作工具类
在Java开发中,经常需要进行日期时间的处理和计算。Java提供了Date
和Calendar
两个基础的日期时间类,但它们的使用不方便,比较繁琐。因此,在日常开发中,我们通常会使用一些日期时间操作工具类来简化日期时间的操作。本文将介绍几个比较好用的Java日期时间操作工具类。
1. joda-time
Joda-Time是一款开源的Java日期时间操作类库,提供了很多方便的日期时间操作方法。Joda-Time目前已经停止更新,官网推荐使用Java 8自带的日期时间类库。不过,如果你在Java 8之前进行开发,Joda-Time还是非常好用的一个工具类。
1.1 安装
在使用Joda-Time之前,需要先下载jar包,并加入项目的类路径中。可以到Joda-Time的官网( http://www.joda.org/joda-time/ )进行下载。
1.2 使用
先看一个Joda-Time的示例代码:
import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
public class JodaTimeDemo {
public static void main(String[] args) {
DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
DateTime dateTime = DateTime.parse("2022-01-01 12:00:00", formatter);
System.out.println(dateTime.plusDays(7).toString(formatter));
}
}
该示例代码通过DateTime.parse
方法将一个字符串转化为DateTime
类型实例,然后使用plusDays
方法对日期进行加减。这里的plusDays
方法表示在原有的日期上增加7天。
1.3 示例
再来一个示例,为了方便阅读,将代码分为若干段:
import org.joda.time.DateTime;
import org.joda.time.Days;
import org.joda.time.Period;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
public class JodaTimeDemo {
public static void main(String[] args) {
// 创建时间日期格式化对象(以字符串中的"2019-08-01"为模板)
DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd");
// 获取当前日期时间对象
DateTime startDate = DateTime.now();
// 格式化字符串为日期时间对象,比较日期天数
DateTime endDate = DateTime.parse("2022-12-31", formatter);
int days = Days.daysBetween(startDate, endDate).getDays();
System.out.println("距离2022年元旦还有 " + days + " 天");
// 获取时间差
Period period = new Period(startDate, endDate);
System.out.println("距离2022年元旦还有 " + period.getYears() + " 年 "
+ period.getMonths() + " 个月 " + period.getDays() + " 天 "
+ period.getHours() + " 小时 " + period.getMinutes() + " 分钟 "
+ period.getSeconds() + " 秒");
// 时间日期加减
DateTime dateTime = DateTime.parse("2022-01-01", formatter);
// 加上90天
DateTime result1 = dateTime.plusDays(90);
// 减去60天
DateTime result2 = dateTime.minusDays(60);
System.out.println("2022年1月1日加上90天等于:" + result1.toString(formatter));
System.out.println("2022年1月1日减去60天等于:" + result2.toString(formatter));
}
}
此示例代码主要介绍了:日期天数计算、时间差计算、时间日期加减三个方面。其中,Days.daysBetween
方法用于计算两个日期之间的天数差,Period
类可以计算两个日期之间的年/月/日/时/分/秒差,plusDays
方法和minusDays
方法用于对时间日期进行加减。
2. java.time
Java 8引入了一套全新的日期时间库:java.time
,它包含了一组用于表示和操作日期时间的类。在新的日期时间库中,类的命名和API设计都经过了优化和改进,使得Java日期时间操作更加简洁和易用。
2.1 使用
Java 8的日期时间类库非常好用,常用的就是LocalDate、LocalTime、LocalDateTime和ZonedDateTime这些类。下面从创建日期时间、日期时间格式化、日期时间计算三个方面介绍Java 8的日期时间相关API。
2.1.1 创建日期时间
LocalDate today = LocalDate.now(); //获取当前日期
LocalDate birthDate = LocalDate.of(1990, 1, 1); //通过年月日创建对象
2.1.2 日期时间格式化
Java 8的日期时间类库也提供了非常方便的日期时间格式化帮助类,借助这个帮助类可以方便地完成日期时间格式化的操作:
// DateTimeFormatter类的ofPattern方法,通过模板创建格式化对象
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime now = LocalDateTime.now();
String formattedDateTime = now.format(formatter);
System.out.println("格式化日期时间:" + formattedDateTime);
2.1.3 日期时间计算
Java 8提供了便于日期时间计算的API,以下是一些使用示例:
LocalDateTime now = LocalDateTime.now(); //获取当前日期时间
LocalDate today = LocalDate.now(); //获取当前日期
LocalTime nowTime = LocalTime.now(); //获取当前时间
LocalDateTime newDateTime = now.plusDays(1).plusHours(2); //加上一天两小时
LocalDate newDate = today.plusDays(7); //加上7天
LocalDateTime minusDateTime = now.minusDays(1).minusHours(2); //减去一天两小时
LocalDate minusDate = today.minusDays(7); //减去7天
2.2 示例
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.Period;
import java.time.format.DateTimeFormatter;
public class JavaTimeDemo {
public static void main(String[] args) {
// 日期时间格式化
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime now = LocalDateTime.now();
String formattedDateTime = now.format(formatter);
System.out.println("格式化日期时间:" + formattedDateTime);
// 日期时间计算
LocalDate today = LocalDate.now(); //获取当前日期
LocalDate birthDate = LocalDate.of(1990, 1, 1); //通过年月日创建对象
Period period = Period.between(birthDate, today); //计算时间差
System.out.printf("距离1990年1月1日已经过去了 %d 年 %d 个月 %d 天\n", period.getYears(), period.getMonths(), period.getDays());
LocalDateTime newDateTime = now.plusDays(1).plusHours(2); //加上一天两小时
LocalDate newDate = today.plusDays(7); //加上7天
LocalDateTime minusDateTime = now.minusDays(1).minusHours(2); //减去一天两小时
LocalDate minusDate = today.minusDays(7); //减去7天
}
}
3. 总结
本文介绍了两种Java日期时间操作工具类:joda-time和java.time。它们都是比较常用的Java日期时间操作工具类,在开发中非常方便实用。其中,joda-time在Java 8之前比较流行,而java.time则是Java 8中新增的一套日期时间API。两种工具类都提供了比较好用的日期时间计算和格式化方法,可以根据需要选择适用的日期时间工具类。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java日期时间操作工具类 - Python技术站