DateUtils
package com.common.utils;
import cn.hutool.core.date.DatePattern;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
public class DateUtils {
private static final Logger logger = LoggerFactory.getLogger(DateUtils.class);
public static final String DEFAULT_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd";
public static final String SIMPLE_DATE_FORMAT = "yyyyMMdd";
public static final String DEFAULT_TIME_FORMAT = "HH:mm:ss";
public static final String CHINESE_DATE_TIME_FORMAT = "yyyy年MM月dd日 HH:mm";
public static String str8Formatstr10(String str_date) {
String date = "";
if (StringUtils.isBlank(str_date) || str_date.length() != 8) {
return "";
}
SimpleDateFormat parseFormat = new SimpleDateFormat("yyyyMMdd");
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
try {
Date parseDate = parseFormat.parse(str_date);
date = dateFormat.format(parseDate);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
public static String str8Formatstr10Sprit(String str_date){
String date = "";
if (StringUtils.isBlank(str_date) || str_date.length() != 8) {
return "";
}
SimpleDateFormat parseFormat = new SimpleDateFormat("yyyyMMdd");
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
try {
Date parseDate = parseFormat.parse(str_date);
date = dateFormat.format(parseDate);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
public static Date str8FormatDate(String str_date){
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
Date date = null;
if (StringUtils.isBlank(str_date) || str_date.length() != 8) {
return null;
}
try {
date = dateFormat.parse(str_date);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
public static Date str10FormatDate(String str_date){
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
if (StringUtils.isBlank(str_date) || str_date.length() != 10) {
return null;
}
try {
date = dateFormat.parse(str_date);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
public static String str8Formatstr6(String str_date){
if (StringUtils.isBlank(str_date) || str_date.length() != 8) {
return "";
}
String dateStr = "";
SimpleDateFormat parseFormat = new SimpleDateFormat("yyyyMMdd");
SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd");
try {
Date parse = parseFormat.parse(str_date);
dateStr = dateFormat.format(parse);
} catch (ParseException e) {
e.printStackTrace();
}
return dateStr;
}
public static String dateFormatstr10(Date date){
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
return dateFormat.format(date);
}
public static String dateFormatstr11(Date date){
SimpleDateFormat dateFormat = new SimpleDateFormat("MM月dd日 HH:mm");
return dateFormat.format(date);
}
public static String dateOfWeek(Date date) {
String[] weekDaysName = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
Calendar instance = Calendar.getInstance();
instance.setTime(date);
int index = instance.get(Calendar.DAY_OF_WEEK) - 1;
return weekDaysName[index];
}
public static String dateAddStepIfWorkDay(Date now, Integer step,List<String> list) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date tradeDay = now;
Calendar calendar = Calendar.getInstance();
calendar.setTime(now);
int i = calendar.get(Calendar.HOUR_OF_DAY);
if (i > 15) {
calendar.set(Calendar.DAY_OF_MONTH, calendar.get(Calendar.DAY_OF_MONTH) + 1);
tradeDay = calendar.getTime();
}
Date workDay = null;
while (true) {
if (list.contains(simpleDateFormat.format(tradeDay))) {
workDay = tradeDay;
break;
} else {
calendar.set(Calendar.DAY_OF_MONTH, calendar.get(Calendar.DAY_OF_MONTH) + 1);
tradeDay = calendar.getTime();
}
}
if (workDay == null) {
return "不存在满足条件的工作日";
} else {
Calendar instance = Calendar.getInstance();
instance.setTime(workDay);
Date workStepDay = null;
int count = 0;
int num = 0;
while (true) {
num++;
instance.set(Calendar.DAY_OF_MONTH, instance.get(Calendar.DAY_OF_MONTH) + 1);
workStepDay = instance.getTime();
if (list.contains(simpleDateFormat.format(workStepDay))) {
count++;
}
if (count == step) {
return simpleDateFormat.format(workStepDay);
}
if (num == 365) {
return "不存在满足T+N的工作日";
}
}
}
}
public static Date str19FormatDate(String str_date){
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = null;
if (StringUtils.isBlank(str_date) || str_date.length() != 19) {
return null;
}
try {
date = dateFormat.parse(str_date);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
public static String dateFormatstr8(Date date){
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
return dateFormat.format(date);
}
public static String dateFormatstr19(Date date){
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return dateFormat.format(date);
}
public static String dateFormatstr5(Date date){
SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd");
return dateFormat.format(date);
}
public static String dateFormatstr6(Date date){
SimpleDateFormat dateFormat = new SimpleDateFormat("MM月dd日");
return dateFormat.format(date);
}
public static String str8Formatstr8(String str_date) {
String date = "";
if (StringUtils.isBlank(str_date) || str_date.length() != 8) {
return "";
}
SimpleDateFormat parseFormat = new SimpleDateFormat("yyyyMMdd");
SimpleDateFormat dateFormat = new SimpleDateFormat("yy-MM-dd");
try {
Date parseDate = parseFormat.parse(str_date);
date = dateFormat.format(parseDate);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
public static String str8Formatstr10YMD(String dateStr) {
String date = "";
if (StringUtils.isBlank(dateStr) || dateStr.length() != 8) {
return "";
}
SimpleDateFormat parseFormat = new SimpleDateFormat("yyyyMMdd");
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年M月d日");
try {
Date parseDate = parseFormat.parse(dateStr);
date = dateFormat.format(parseDate);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
public static String strToStr(String dateStr, String formatOri, String formatTar) {
String date = "";
SimpleDateFormat parseFormat = new SimpleDateFormat(formatOri);
SimpleDateFormat dateFormat = new SimpleDateFormat(formatTar);
try {
Date parseDate = parseFormat.parse(dateStr);
date = dateFormat.format(parseDate);
} catch (Exception e) {
date = "";
}
return date;
}
public static Date str17FormatDate(String str_date){
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd HH:mm:ss");
Date date = null;
if (StringUtils.isBlank(str_date) || str_date.length() != 17) {
return null;
}
try {
date = dateFormat.parse(str_date);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
public static Date strPoint10FormatDate(String str_date){
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy.MM.dd");
Date date = null;
if (StringUtils.isBlank(str_date) || str_date.length() != 10) {
return null;
}
try {
date = dateFormat.parse(str_date);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
public static String timeStampToString(Timestamp time,String formatStr){
SimpleDateFormat dateFormat = new SimpleDateFormat(formatStr);
return dateFormat.format(time);
}
public static String str10Formatstr8(String str_date) {
String date = "";
if (StringUtils.isBlank(str_date) || str_date.length() != 10) {
return "";
}
SimpleDateFormat parseFormat = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
try {
Date parseDate = parseFormat.parse(str_date);
date = dateFormat.format(parseDate);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
public static String str10Formatstr5(String str_date) {
String date = "";
if (StringUtils.isBlank(str_date) || str_date.length() != 10) {
return "";
}
SimpleDateFormat parseFormat = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd");
try {
Date parseDate = parseFormat.parse(str_date);
date = dateFormat.format(parseDate);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
public static Date string2Date(String str, String pattern) {
if (FormatCheck.isEmpty(str)) {
return null;
}
SimpleDateFormat dateFormat = new SimpleDateFormat(pattern);
Date date = null;
try {
date = dateFormat.parse(str);
} catch (ParseException e) {
}
return date;
}
public static Date getCurrentYMD(){
Calendar ca = Calendar.getInstance();
ca.set(Calendar.HOUR_OF_DAY, 0);
ca.set(Calendar.MINUTE, 0);
ca.set(Calendar.SECOND, 0);
return ca.getTime();
}
public static String getLocalTimeStr(LocalTime time,String pattern){
if (time == null){
return StringUtils.EMPTY;
}
if (StringUtils.isBlank(pattern)){
pattern = DEFAULT_TIME_FORMAT;
}
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
return time.format(formatter);
}
public static String getLocalTimeStr(LocalTime time){
return getLocalTimeStr(time,DEFAULT_TIME_FORMAT);
}
public static String formatChineseDate(LocalDateTime dateTime) {
if (null == dateTime) {
return null;
}
return DatePattern.CHINESE_DATE_TIME_FORMAT.format(dateTime);
}
public static String formatLocalDateTime(LocalDateTime dateTime,String pattern){
if (dateTime == null){
return StringUtils.EMPTY;
}
if (StringUtils.isBlank(pattern)){
pattern = DEFAULT_DATE_TIME_FORMAT;
}
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
return dateTime.format(formatter);
}
public static String formatLocalDateTime(LocalDateTime dateTime){
return formatLocalDateTime(dateTime,DEFAULT_DATE_TIME_FORMAT);
}
public static String getDate6AndWeek(Date date){
String[] weekDays = {"周日", "周一", "周二", "周三", "周四", "周五", "周六"};
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return new StringBuilder(dateFormatstr6(date)).append("(").append(weekDays[calendar.get(Calendar.DAY_OF_WEEK)-1]).append(")") .toString();
}
public static String getDateBefore(Date date, int days){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) + days);
return dateFormatstr19(calendar.getTime());
}
public static void main(String[] args) {
System.out.println(getLocalTimeStr(LocalTime.of(12, 0, 0), "HH:mm"));
}
}