您的位置:首页 > 编程语言 > Java开发

Java日期简化工具Joda-Time

2017-05-30 18:00 441 查看

简介

想必大家在平时的项目开发中经常要处理日期的问题,比如需要处理两个日期间隔的天数,使用JDK1.8以前自带的日期API处理相当的繁琐(JDK1.8的API已经重写了日期库,其实也是借鉴了Joda-Time),那么接下来介绍的这款日期库工具(Joda-Time)就非常强大了,使用Joda-Time可以轻松的处理各种复杂的时间相关问题。

特点

易于使用:使用Joda-Time可以非常容易的处理一些复杂的日期问题

易于扩展:Joda-Time支持多达8种日历系统

线程安全:Joda类具有不可变性,因此它们的实例无法被修改

提供最新的时区计算

互操作性:与JDK可互操作

类说明

Instant:不可变类,代表时间线上的一个唯一的时间点

DateTime:不可变类,它以毫秒级的精度封装时间上的某个瞬间时刻

LocalDate:不可变类,该类封装了一个年/月/日的组合。当地理位置(即时区)变得不重要时,使用它存储日期将非常方便

LocalTime:不可变类,这个类封装一天中的某个时间,当地理位置不重要的情况下,可以使用这个类来只存储一天当中的某个时间

LocalDateTime:不可变类,该类封装了一个年/月/日 时:分:秒的组合。当地理位置(即时区)变得不重要时,使用它存储日期和时间非常方便

使用示例

(1)使用maven导入Joda-Time包

<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.9.7</version>
</dependency>

(2)DateTime使用

如需输出当前日期和时间

DateTime dateTime = new DateTime();
System.out.println(dateTime.toString("yyyy-MM-dd HH:mm:ss"));
//本月多少号
int dayOfMonth = dateTime.getDayOfMonth();
//本年的第几月
int monthOfYear = dateTime.getMonthOfYear();
//获取年份
int year = dateTime.getYear();
//当前日期+1天后的时间
dateTime = dateTime.plusDays(1);
//当前日期+1小时的时间
dateTime = dateTime.plusHours(1);
//当前日期-1年前的时间
dateTime = dateTime.plusYears(-1);
//创建指定日期时间如:2017-2-28 10:40:50:500
DateTime dateTime = new DateTime(2017,2,28,10,40,50,500);

(3)LocalDate使用

该类代表没有时区的日期,适用与对时区不关心的日期场景

LocalDate localDate = new LocalDate();
LocalDate lDate = new LocalDate(2017,12,12);

(4)LocalTime使用

该类代表没有时区的时间,适用与对时区不关心的时间场景

LocalTime localTime = new LocalTime();
LocalTime lTime = new LocalTime(12,20,10);

(5)LocalDateTime使用

该类代表没有时区的日期时间,适用与对时区不关心的日期时间场景

LocalDateTime localDateTime = new LocalDateTime();
//2017-12-12 13:10:18
LocalDateTime localDateTime2 = new LocalDateTime(2017,12,12,13,10,18);

(6)与JDK互操作

Date date = dateTime.toDate();
Calendar calendar = dateTime.toCalendar(Locale.CHINESE);

(7)综合使用

LocalDate localDate = new LocalDate();
//计算下一个月的第一天的日期
localDate = localDate.plusMonths(1).dayOfMonth().withMinimumValue();
DateTime dateTime = new DateTime();
//计算一年前的第二个月的最后一天的日期
DateTime dateTime = dateTime.minusYears(1) // 一年前
.monthOfYear()     // 获得 monthOfYear 属性
.setCopy(2)        // 设置为2月
.dayOfMonth()      // 获得 dayOfMonth 属性
.withMaximumValue();// 一个月中的最后一天
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息