日期转换格式工具、String、Date格式互转
日期转换格式工具
package com.xxxxx.smartcity.gov.fgw.meeting.utils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateFormatUtils;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.Month;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Date;
import java.util.Objects;
/**
* @author WANGHONGWEI319
* @date 2019/8/16 18:13
*/
public final class DateUtil {
private final static String YEAR_MONTH_DAY = "yyyyMMdd";
private final static String QUARTER_FIRST = "Q1";
private final static String QUARTER_SECOND = "Q2";
private final static String QUARTER_THIRD = "Q3";
private final static String QUARTER_FOURTH = "Q4";
private DateUtil() {
}
/**
* 判断传入日期是否为本季度
*
* @param date
* @return
*/
public static Boolean inCurrentQuarter(Date date) {
if (null == date) {
return false;
}
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int year = calendar.get(Calendar.YEAR);
LocalDate now = LocalDate.now();
if (now.getYear() != year) {
return false;
}
LocalDate localDate = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault()).toLocalDate();
int i = localDate.getMonthValue() - now.getMonth().firstMonthOfQuarter().getValue();
return i <= 2 && i >= 0;
}
/**
* 获取指定日期前后一段时间日期
*
* @param date
* @param day
* @param calendarType
* @return
*/
public static Date getDateBefore(Date date, int day, int calendarType) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(calendarType, -day);
return calendar.getTime();
}
/**
* 比较日期相等
*
* @param date1
* @param date2
* @return
*/
public static int dateCompare(Date date1, Date date2) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date dateFirst = null;
try {
dateFirst = dateFormat.parse(dateFormat.format(date1));
Date dateLast = dateFormat.parse(dateFormat.format(date2));
if (dateFirst.after(dateLast)) {
return 1;
} else if (dateFirst.before(dateLast)) {
return -1;
}
return 0;
} catch (ParseException e) {
return 0;
}
}
/**
* 获取当前时间
*
* @return
*/
public static Date getCurrentDate() {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
return dateFormat.parse(dateFormat.format(new Date()));
} catch (ParseException e) {
return null;
}
}
/**
* 获取当前时间串
*
* @return
*/
public static String getCurrentDateStr(String pattern) {
SimpleDateFormat dateFormat = new SimpleDateFormat(pattern);
return dateFormat.format(new Date());
}
/**
* 获取指定时间串
*
* @return
*/
public static String getDateStr(Date date,String pattern) {
if (ObjectUtils.isEmpty(date)){
return "";
}
SimpleDateFormat dateFormat = new SimpleDateFormat(pattern);
return dateFormat.format(date);
}
/**
* @param date
* @return
*/
public static Date dateFormat(Date date) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date dateFirst = null;
try {
dateFirst = dateFormat.parse(dateFormat.format(date));
} catch (ParseException e) {
e.printStackTrace();
}
return dateFirst;
}
/**
* @param dateStr
* @return
*/
public static Date dateParse(String dateStr) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date dateFirst = null;
try {
dateFirst = dateFormat.parse(dateStr);
} catch (ParseException e) {
e.printStackTrace();
}
return dateFirst;
}
/**
* date转String
* @param dateStr
* @return
*/
public static String dateParse2(Date dateStr) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String dateFirst = null;
try {
dateFirst = dateFormat.format(dateStr);
} catch (Exception e) {
e.printStackTrace();
}
return dateFirst;
}
/**
* 得到日期字符串 默认格式(yyyy-MM-dd) pattern可以为:"yyyy-MM-dd" "HH:mm:ss" "E"
*/
public static String formatDate(Date date, Object... pattern) {
String formatDate = null;
if (pattern != null && pattern.length > 0) {
formatDate = DateFormatUtils.format(date, pattern[0].toString());
} else {
formatDate = DateFormatUtils.format(date, "yyyy-MM-dd");
}
return formatDate;
}
/**
* 将日期格式字符串转化为指定格式的日期
*
* @param timeStr - 日期字符串
* @param format - 具体格式,传空则默认为"yyyy-MM-dd"
* @return
*/
public static Date str2Date(String timeStr, String format) {
if (null == format || format.isEmpty()) {
format = "yyyy-MM-dd";
}
SimpleDateFormat sdf = new SimpleDateFormat(format);
Date date = null;
try {
date = sdf.parse(timeStr);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
/**
* 获取当月第一天
*
* @param year
* @param month
* @return
*/
public static String getFirstDayOfMonth(int year, int month) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month - 1);
cal.set(Calendar.DAY_OF_MONTH, 1);
return new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime());
}
/**
* 获取当月最后一天
*
* @param year
* @param month
* @return
*/
public static String getLastDayOfMonth(int year, int month) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month - 1);
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DATE));
return new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime());
}
/**
* 设置时间
*
* @param year
* @param month
* @param day
* @return
*/
public static String setDate(int year, int month, int day) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month - 1);
cal.set(Calendar.DAY_OF_MONTH, day);
return new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime());
}
/**
* 取上一年
*
* @param year 年份,格式yyyy
* @return 年份,格式yyyy
*/
public static String getPreYear(String year) {
if (StringUtils.isBlank(year) || year.length() != 4 || !StringUtils.isNumericSpace(year)) {
return null;
}
return StringUtils.leftPad(String.valueOf(Integer.parseInt(year) - 1), 4, "0");
}
/**
* 取上几个月
*
* @param date, 格式yyyyMMdd
* @param preFew,上几个月
* @return 月份,格式yyyyMMdd
*/
public static String getPreFewMonth(String date, int preFew) {
if (StringUtils.isBlank(date) || date.length() != 8) {
return null;
}
LocalDate localDate = LocalDate.parse(date, DateTimeFormatter.ofPattern(YEAR_MONTH_DAY));
return DateTimeFormatter.ofPattern(YEAR_MONTH_DAY).format(localDate.minusMonths(preFew));
}
public static String convertDate2Quarter(LocalDate localDate) {
return convertDate2Quarter(localDate, null);
}
public static String convertDate2Quarter(LocalDate localDate, String splitStr) {
String quarter = null;
switch (localDate.getMonth()) {
case MARCH:
quarter = QUARTER_FIRST;
break;
case JUNE:
quarter = QUARTER_SECOND;
break;
case SEPTEMBER:
quarter = QUARTER_THIRD;
break;
case DECEMBER:
quarter = QUARTER_FOURTH;
break;
}
if (Objects.isNull(splitStr)) {
splitStr = "";
}
return Objects.nonNull(quarter) ?
StringUtils.leftPad(localDate.getYear() + splitStr + quarter, 6 + splitStr.length(), "0") : null;
}
/**
* 转换季度
*
* @param date
* @return
*/
public static String convertDate2Quarter(String date) {
return convertDate2Quarter(date, null);
}
/**
* 转换季度
*
* @param date
* @return
*/
public static String convertDate2Quarter(String date, String splitStr) {
if (StringUtils.isBlank(date) || date.length() != 8) {
return null;
}
LocalDate localDate = LocalDate.parse(date, DateTimeFormatter.ofPattern(YEAR_MONTH_DAY));
return convertDate2Quarter(localDate, splitStr);
}
public static String convertQuarter2Date(String quarter, String splitStr) {
if (StringUtils.isBlank(quarter) || quarter.length() < 6) {
return null;
}
String yearValue = quarter.substring(0, 4);
int splitLen = Objects.nonNull(splitStr) ? splitStr.length() : 0;
String quarterValue = quarter.substring(4 + splitLen);
String monthValue = null;
switch (quarterValue) {
case QUARTER_FIRST:
monthValue = "0" + Month.MARCH.getValue();
break;
case QUARTER_SECOND:
monthValue = "0" + Month.JUNE.getValue();
break;
case QUARTER_THIRD:
monthValue = "0" + Month.SEPTEMBER.getValue();
break;
case QUARTER_FOURTH:
monthValue = "" + Month.DECEMBER.getValue();
break;
}
return Objects.nonNull(monthValue) ? StringUtils.leftPad(yearValue + monthValue + "01", 8, "0") : null;
}
public static LocalDate convertQuarterDate(LocalDate localDate) {
int monthValue = localDate.getMonthValue();
if (monthValue <= 3) {
return localDate.withMonth(Month.MARCH.getValue()).withDayOfMonth(1);
} else if (monthValue <= 6) {
return localDate.withMonth(Month.JUNE.getValue()).withDayOfMonth(1);
} else if (monthValue <= 9) {
return localDate.withMonth(Month.SEPTEMBER.getValue()).withDayOfMonth(1);
} else {
return localDate.withMonth(Month.DECEMBER.getValue()).withDayOfMonth(1);
}
}
/**
* 转换月份
*
* @param date
* @return
*/
public static String convertDate2Month(String date) {
if (StringUtils.isBlank(date) || date.length() != 8) {
return null;
}
LocalDate localDate = LocalDate.parse(date, DateTimeFormatter.ofPattern(YEAR_MONTH_DAY));
return StringUtils.leftPad(String.valueOf(localDate.getMonthValue()), 2, "0");
}
}
还没有评论,来说两句吧...