引入maven依赖包
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.6.2</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<!-- 时间工具类-->
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.9.9</version>
</dependency>
时间转换格式工具类
package com.lc.demo;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.joda.time.DateTime;
import org.joda.time.LocalDate;
import java.lang.management.ManagementFactory;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;
public class DateUtils extends org.apache.commons.lang3.time.DateUtils
{
public static String YYYY = "yyyy";
public static String YYYY_MM = "yyyy-MM";
public static String YYYYMMDD = "yyyyMMdd";
public static String YYYY_MM_DD = "yyyy-MM-dd";
public static String YYYYMMDDHHMMSS = "yyyyMMddHHmmss";
public static String YYYYMMDDHHMMSSSSS = "yyyyMMddHHmmssSSS";
public static String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
public static String YYYY_MM_DD_HH_MM_SS_SSS = "yyyy-MM-dd HH:mm:ss.SSS";
private static String[] parsePatterns = {
"yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM",
"yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM",
"yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm", "yyyy.MM"};
public static Date getNowDate()
{
return new Date();
}
public static String getDate()
{
return dateTimeNow(YYYY_MM_DD);
}
public static final String getTime()
{
return dateTimeNow(YYYY_MM_DD_HH_MM_SS);
}
public static final String dateTimeNow()
{
return dateTimeNow(YYYYMMDDHHMMSS);
}
public static final String dateTimeNowSSS()
{
return dateTimeNow(YYYYMMDDHHMMSSSSS);
}
public static final String dateTimeNow(final String format)
{
return parseDateToStr(format, new Date());
}
public static final String dateTime(final Date date)
{
return parseDateToStr(YYYY_MM_DD, date);
}
public static final String parseDateToStr(final String format, final Date date)
{
return new SimpleDateFormat(format).format(date);
}
public static final LocalDateTime strToDateTime(final String format, final String time){
return LocalDateTime.parse(time, DateTimeFormatter.ofPattern(format));
}
public static final Date dateTime(final String format, final String ts)
{
try
{
return new SimpleDateFormat(format).parse(ts);
}
catch (ParseException e)
{
throw new RuntimeException(e);
}
}
public static String localDate2String(java.time.LocalDate date) {
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd");
return date.format(fmt);
}
public static final String datePath()
{
Date now = new Date();
return DateFormatUtils.format(now, "yyyy/MM/dd");
}
public static final String dateTime()
{
Date now = new Date();
return DateFormatUtils.format(now, "yyyyMMdd");
}
public static Date parseDate(Object str)
{
if (str == null)
{
return null;
}
try
{
return parseDate(str.toString(), parsePatterns);
}
catch (ParseException e)
{
return null;
}
}
public static Date getServerStartDate()
{
long time = ManagementFactory.getRuntimeMXBean().getStartTime();
return new Date(time);
}
public static String getDatePoor(Date endDate, Date nowDate)
{
long nd = 1000 * 24 * 60 * 60;
long nh = 1000 * 60 * 60;
long nm = 1000 * 60;
long diff = endDate.getTime() - nowDate.getTime();
long day = diff / nd;
long hour = diff % nd / nh;
long min = diff % nd % nh / nm;
return day + "天" + hour + "小时" + min + "分钟";
}
public static Date localDatetoDate(LocalDateTime localDateTime) {
return Date.from( localDateTime.atZone( ZoneId.systemDefault()).toInstant());
}
public static String nowDate(){
DateTime dateTime = new DateTime(DateTime.now());
return dateTime.toString(YYYY_MM_DD);
}
public static String nowDateWithoutSep(){
DateTime dateTime = new DateTime(DateTime.now());
return dateTime.toString(YYYYMMDD);
}
public static String nowDateTimeWithoutSep(){
DateTime dateTime = new DateTime(DateTime.now());
return dateTime.toString(YYYYMMDDHHMMSS);
}
public static Date[] getWeekStartAndEnd(int week) {
DateTime dateTime = new DateTime();
LocalDate date = new LocalDate(dateTime.plusWeeks(week));
date = date.dayOfWeek().withMinimumValue();
Date beginDate = date.toDate();
Date endDate = date.plusDays(6).toDate();
return new Date[]{beginDate, endDate};
}
public static Date addDateSeconds(Date date, int seconds) {
if (date==null){
return null;
}
DateTime dateTime = new DateTime(date);
return dateTime.plusSeconds(seconds).toDate();
}
public static Date addDateMinutes(Date date, int minutes) {
if (date==null){
return null;
}
DateTime dateTime = new DateTime(date);
return dateTime.plusMinutes(minutes).toDate();
}
public static Date addDateHours(Date date, int hours) {
if (date==null){
return null;
}
DateTime dateTime = new DateTime(date);
return dateTime.plusHours(hours).toDate();
}
public static Date addDateDays(Date date, int days) {
if (date==null){
return null;
}
DateTime dateTime = new DateTime(date);
return dateTime.plusDays(days).toDate();
}
public static Date addDateWeeks(Date date, int weeks) {
DateTime dateTime = new DateTime(date);
return dateTime.plusWeeks(weeks).toDate();
}
public static Date addDateMonths(Date date, int months) {
DateTime dateTime = new DateTime(date);
return dateTime.plusMonths(months).toDate();
}
public static Date addDateYears(Date date, int years) {
DateTime dateTime = new DateTime(date);
return dateTime.plusYears(years).toDate();
}
public static Date localDateTime2JavaDate(LocalDateTime localDateTime) {
ZoneId localZone = ZoneId.systemDefault();
ZonedDateTime zdt = localDateTime.atZone(localZone);
Date date = Date.from(zdt.toInstant());
return date;
}
public static LocalDateTime javaDate2LocalDateTime(Date date) {
Instant instant = date.toInstant();
ZoneId localZone = ZoneId.systemDefault();
LocalDateTime localDateTime = instant.atZone(localZone).toLocalDateTime();
return localDateTime;
}
public static String localDateTime2String(LocalDateTime localDateTime,String pattern) {
DateTimeFormatter dtf = null;
if (localDateTime == null) {
throw new IllegalArgumentException("传入时间不能为空");
}
if (pattern == null) {
dtf = DateTimeFormatter.ofPattern(YYYYMMDDHHMMSS);
}else {
dtf = DateTimeFormatter.ofPattern(pattern);
}
return dtf.format(localDateTime);
}
public static String javaDate2String(Date date,String pattern) {
SimpleDateFormat sdf = null;
if (date == null) {
throw new IllegalArgumentException("传入时间不能为空");
}
if (pattern == null) {
sdf = new SimpleDateFormat(YYYYMMDDHHMMSS);
}else {
sdf = new SimpleDateFormat(pattern);
}
return sdf.format(date);
}
public static Date string2javaDate(String date,String pattern) {
SimpleDateFormat sdf = null;
if (date == null) {
throw new IllegalArgumentException("传入时间不能为空");
}
if (pattern == null) {
sdf = new SimpleDateFormat(YYYYMMDDHHMMSS);
}else {
sdf = new SimpleDateFormat(pattern);
}
try {
return sdf.parse(date);
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
public static LocalDateTime string2LocalDateTime(String date, String pattern) {
DateTimeFormatter dtf = null;
if (date == null) {
throw new IllegalArgumentException("传入时间不能为空");
}
if (pattern == null) {
dtf = DateTimeFormatter.ofPattern(YYYYMMDDHHMMSS);
}else {
dtf = DateTimeFormatter.ofPattern(pattern);
}
return LocalDateTime.parse(date,dtf);
}
public static java.time.LocalDate date2LocalDate(Date date) {
if(null == date) {
return null;
}
return date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
}
public static Date localDate2Date(java.time.LocalDate localDate) {
if(null == localDate) {
return null;
}
ZonedDateTime zonedDateTime = localDate.atStartOfDay(ZoneId.systemDefault());
return Date.from(zonedDateTime.toInstant());
}
public static Date getTimesWeekMorning() {
Calendar cal = Calendar.getInstance();
cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
return cal.getTime();
}
public static Date getTimesWeekNight() {
Calendar cal = Calendar.getInstance();
cal.setTime(getTimesWeekMorning());
cal.add(Calendar.DAY_OF_WEEK, 7);
cal.add(Calendar.MINUTE,-1);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
return cal.getTime();
}
public static Date getTimesMonthMorning() {
Calendar cal = Calendar.getInstance();
cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMinimum(Calendar.DAY_OF_MONTH));
return cal.getTime();
}
public static Date getTimesMonthNight() {
Calendar cal = Calendar.getInstance();
cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.add(Calendar.MINUTE,-1);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
return cal.getTime();
}
public static Date getTimesLastMonthMorning() {
Calendar cal = Calendar.getInstance();
cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMinimum(Calendar.DAY_OF_MONTH));
cal.add(Calendar.MONDAY,-1);
return cal.getTime();
}
public static Date getTimesLastMonthNight() {
Calendar cal = Calendar.getInstance();
cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.add(Calendar.MONDAY,-1);
cal.add(Calendar.MINUTE,-1);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
return cal.getTime();
}
public static Date getToDayStartTime(){
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
return cal.getTime();
}
public static Date getToDayEndTime(){
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
return cal.getTime();
}
}
基本使用
Date year = DateUtils.localDatetoDate(LocalDateTime.of(2022+1, 1, 1, 0, 0).minusSeconds(1L));
Date month = DateUtils.localDatetoDate(LocalDateTime.of(2022, 11 + 1, 1, 0, 0).minusMinutes(1L));
Date week = DateUtils.localDatetoDate(ProcDateUtil.getDateByYearMonthWeek(2022, 11, 0 + 1));
System.out.println(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS,year));
System.out.println(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS,month));
System.out.println(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS,week));
System.out.println("周四: " +LocalDate.parse("2017-07-20").getDayOfWeek());
System.out.println("日: " +LocalDate.parse("2017-07-20").getDayOfMonth());
System.out.println("月: " +LocalDate.parse("2017-07-20").getMonthValue());
System.out.println("年: " +LocalDate.parse("2017-07-20").getYear());
System.out.println("月: " +LocalDate.parse("2017-07-20").getMonth());
System.out.println(LocalDate.now().isLeapYear());
System.out.println(LocalDate.parse("2017-07-20").isAfter(LocalDate.parse("2017-07-21")));
System.out.println(LocalDate.parse("2017-07-20").isBefore(LocalDate.parse("2017-07-21")));
System.out.println(LocalDate.parse("2217-07-20").isBefore(LocalDate.parse("2017-07-21")));