本文介绍两个时间日期工具类的使用:1、Joda-time;2、Java8自带的时间类。
两者的使用都很方便,用法类似,少量代码就可以实现常用的功能,如:根据自定义格式获取时间、时间加减、时间对比等。
具体看代码:
1. maven项目引入jar 包
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.10</version>
</dependency>
2. 代码:(不够用自己扩展一下,在公司wiki上看到的,自己整理了一下)
package com.cyf.date;
import org.joda.time.DateTime;
import java.util.Objects;
/**
* @author cyf
* @description
* @create 2018-11-16 16:35
**/
public class TestJodaTime {
public static final String DEFAULT_PATTEN = "yyyy-MM-dd HH:mm:ss";
public static final Integer DEFAULT_MONTH = 1;
/**
* 获取当前时间
*
* @return 当前时间默认格式为 yyyy-MM-dd HH:mm:ss
*/
public static String getNowDate() {
return getNowDate(null);
}
/**
* 获取当前时间
*
* @return 返回当前时间
*/
public static DateTime nowDate() {
return new DateTime();
}
/**
* 获取当前时间
*
* @param pattern 格式
* @return 返回当前时间 格式为 pattern
* 默认为 yyyy-MM-dd HH:mm:ss
*/
public static String getNowDate(String pattern) {
if (Objects.isNull(pattern)) {
pattern = DEFAULT_PATTEN;
}
return new DateTime().toString(pattern);
}
/**
* 获取前几个月时间
*
* @param date 当前时间
* @param beforeMonth 几个月前
* @return 返回几个月前时间 默认为 yyyy-MM-dd HH:mm:ss
*/
public static String getBeforeMonthDate(DateTime date, Integer beforeMonth) {
return getBeforeMonthDate(date, beforeMonth, null);
}
/**
* 获取前几个月时间
*
* @param date 当前时间
* @param beforeMonth 几个月前
* @return 返回几个月前时间 格式为 pattern
* 默认为 yyyy-MM-dd HH:mm:ss
* @Param pattern 时间格式
*/
public static String getBeforeMonthDate(DateTime date, Integer beforeMonth, String pattern) {
if (Objects.isNull(beforeMonth)) {
beforeMonth = DEFAULT_MONTH;
}
if (Objects.isNull(pattern)) {
pattern = DEFAULT_PATTEN;
}
return date.minusMonths(beforeMonth).toString(pattern);
}
// Joda-time的使用 测试
public static void main(String[] args) {
//日期比较
DateTime d1 = new DateTime("2012-02-01");
DateTime d2 = new DateTime("2012-05-01");
//和系统时间比
boolean b1 = d1.isAfterNow();
boolean b2 = d1.isBeforeNow();
boolean b3 = d1.isEqualNow();
//和其他日期比
boolean f1 = d1.isAfter(d2);
boolean f2 = d1.isBefore(d2);
boolean f3 = d1.isEqual(d2);
// 获取当前时间
String nowDate = getNowDate();
System.out.println("当前时间:" + nowDate);
DateTime now = nowDate();
// 获取4个月之前的时间
String beforeDate = getBeforeMonthDate(now, 4);
System.out.println("4个月之前的时间:" + beforeDate);
// 其他方法
System.out.println("当前时间:" + now.toString(DEFAULT_PATTEN));
System.out.println("9天后时间:" + now.plusDays(9).toString(DEFAULT_PATTEN));
System.out.println("4分钟后时间:" + now.plusMinutes(4).toString(DEFAULT_PATTEN));
System.out.println("4小时后时间:" + now.plusHours(4).toString(DEFAULT_PATTEN));
}
// Java8时间类使用
// public static void main(String[] args) {
//
// //获取时间
// DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
// Instant instant = Instant.now();
// LocalDate localDate = LocalDate.now();
// LocalTime localTime = LocalTime.now();
// String localDateTime = LocalDateTime.now().format(dateTimeFormatter);
// LocalDate date = LocalDate.of(2018, 10, 30);
// System.out.println(instant);
// System.out.println(localDate);
// System.out.println(localTime);
// System.out.println(localDateTime);
// System.out.println(date);
//
// //时间加减
// LocalTime localTime1 = localTime.plusHours(2);//增加两个小时
// String localDateTime1 = LocalDateTime.now().plusDays(2).format(dateTimeFormatter);//增加两天
// String localDateTime2 = LocalDateTime.now().minusDays(2).format(dateTimeFormatter);//减少两天
// System.out.println(localTime1);
// System.out.println(localDateTime1);
// System.out.println(localDateTime2);
//
// //日期比较
// LocalDateTime dt1 = LocalDateTime.now().plusDays(2);
// LocalDateTime dt2 = LocalDateTime.now().minusDays(2);
// boolean flag = dt1.isAfter(dt2);//dt1是否大于dt2
// boolean flag1 = dt1.isBefore(dt2);//dt1是否大于dt2
// boolean flag2 = dt1.isEqual(dt2);//dt1是否等于dt2
// System.out.println(flag);
// System.out.println(flag1);
// System.out.println(flag2);
// }
}