joda-time快速入门学习

版权声明:本文为博主原创文章版权归作者和CSDN共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 https://blog.csdn.net/javaee_gao/article/details/89198523

最近项目中有要修改时间一些处理,使用传统的java的Date包或者Calendar类太麻烦而且也不方便,这里推荐使用joda-time.方便实用,废话不多说,实战走起

添加maven的依赖

<!-- https://mvnrepository.com/artifact/joda-time/joda-time -->
<dependency>
    <groupId>joda-time</groupId>
    <artifactId>joda-time</artifactId>
    <version>2.9.9</version>
</dependency>

DateTime常用的方法

  • 时间的减运算
方法名 方法介绍
minusDays(n) 返回DateTime类型的前n天
minusHours(n) 返回DateTime类型的前n小时
minusMinutes(n) 返回DateTime类型的前n分钟
minusMonths(n) 返回DateTime类型前n月
minusSeconds(n) 返回DateTime类型前n秒
minusWeeks(n) 返回DateTime类型前n周
minusYears(n) 返回DateTime类型前n年
  • 时间的增运算
方法名 方法介绍
plusDays(n) 返回DateTime类型的后n天
plusHours(n) 返回DateTime类型的后n小时
plusMinutes(n) 返回DateTime类型的后n分钟
plusMonths(n) 返回DateTime类型后n月
plusSeconds(n) 返回DateTime类型后n秒
plusWeeks(n) 返回DateTime类型后n周
plusYears(n) 返回DateTime类型后n年
  • 指定周内天,月中天和年内天
方法名 方法介绍
withDayOfMonth 返回LocalDateTime月的第几天
withDayOfYear 返回指定时间年的第几天
withHour 返回指定时间的小时
withMinute 返回指定时间的分钟
withMonth 返回指定时间的月
withSecond 返回指定时间的秒
withYear 返回指定时间年份
  • 根据传入的时间获取,传入时间当天开始时间和结束时间
// 当前时间
DateTime now = new DateTime();
// 时间格式化正则
String formatter="yyyy-MM-dd HH:mm:ss"// 当天开始时间和结束时间
String startTime = now.withTimeAtStartOfDay().toString(formatter);
String endTime = now.millisOfDay().withMaximumValue().toString(formatter);
// 时间运算,这里只举例天的运算
DateTime yesterday = now.minusDays(1);
DateTime tomorrow = now.plusDays(1);
  • 时间的比较与差值运算
DateTime A = DateTime.now()
DateTime B= DateTime.now().plusDays(1)
// 比较时间A是否在时间B之后
System.out.println(A.isAfter(B));
// 比较时间A是否在时间B之前
System.out.println(A.isBefore(B));
// 比较时间A时间是否与B时间相等
System.out.println(A.isEqual(B));
9、计算两个日期相差多少天、相差多少月、相差多少年
DateTime nextFirstDay= dateTime.dayOfYear().withMinimumValue();
DateTime nextLastDay= dateTime.dayOfYear().withMaximumValue();
// 计算相差多少天
int days = Days.daysBetween(nextFirstDay, nextLastDay).getDays();
// 计算相差多少月
int months = Months.monthsBetween(nextFirstDay, nextLastDay).getMonths();
// 计算相差多少年
int years =Years.yearsBetween(nextFirstDay, nextLastDay).getYears();
// 计算相差多少小时
int hours = Hours.hoursBetween(nextFirstDay, nextLastDay).getHours();
// 计算相差多少小时
int minutes = Minutes.minutesBetween(nextFirstDay, nextLastDay).getMinutes();
  • 时间状态信息
 // 月中天,年中天,周中天
 DateTime now = new DateTime();
 System.out.println("月中天" + now.dayOfMonth().get() + " 年中天" + now.dayOfYear().get() + " 周内天" + now.dayOfWeek().get());
// 得到任何日期所在周的第一天与最后一天
DateTime dateTime=new DateTime();
// 周一的现在时刻(假设今天周三下午5点,这里返回就是周一的下午5点)
String monday= dateTime.dayOfWeek().withMinimumValue().toString(“yyyyMMdd”);
// 周末的现在时刻 (假设今天周三下午5点,这里返回就是周日的下午5点)
String sunday= dateTime.dayOfWeek().withMaximumValue().toString(“yyyyMMdd”);
// 本周周一的0点
String week1 = now.millisOfDay().withMinimumValue().withDayOfWeek(1).toString(formatter);
 //本周周末的23点59分59秒
String week2 = now.millisOfDay().withMaximumValue().withDayOfWeek(7).toString(formatter);
DateTime dateTime=new DateTime();
//得到任何日期所在月的第一天(假设今天周三下午5点,这里返回就是此月1号的下午5点)与最后一天
String first= dateTime.dayOfMonth().withMinimumValue().toString(“yyyyMMdd”);
//得到任何日期所在月的第一天(假设今天周三下午5点,这里返回就是此月末那天的下午5点)与最后一天
String last= dateTime.dayOfMonth().withMaximumValue().toString(“yyyyMMdd”);
// 返回当月第一天的零点零分
 String month1 = now.dayOfMonth().withMinimumValue().withTimeAtStartOfDay().toString(formatter);
 // 当月最后一天的23点59分
String month2 = now.dayOfMonth().withMaximumValue().millisOfDay().withMaximumValue().toString(formatter);

猜你喜欢

转载自blog.csdn.net/javaee_gao/article/details/89198523