记录日常开发总结的日期工具类
字符串转日期
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* Date utils
*
* @author Jiaju Zhuang
**/
public class DateUtils {
public static final String DATE_FORMAT_10 = "yyyy-MM-dd";
public static final String DATE_FORMAT_14 = "yyyyMMddHHmmss";
public static final String DATE_FORMAT_17 = "yyyyMMdd HH:mm:ss";
public static final String DATE_FORMAT_19 = "yyyy-MM-dd HH:mm:ss";
public static final String DATE_FORMAT_19_FORWARD_SLASH = "yyyy/MM/dd HH:mm:ss";
private static final String MINUS = "-";
private DateUtils() {}
/**
* convert string to date
*
* @param dateString
* @param dateFormat
* @return
* @throws ParseException
*/
public static Date parseDate(String dateString, String dateFormat) throws ParseException {
if (StringUtils.isEmpty(dateFormat)) {
dateFormat = switchDateFormat(dateString);
}
return new SimpleDateFormat(dateFormat).parse(dateString);
}
/**
* convert string to date
*
* @param dateString
* @return
* @throws ParseException
*/
public static Date parseDate(String dateString) throws ParseException {
return parseDate(dateString, switchDateFormat(dateString));
}
/**
* switch date format
*
* @param dateString
* @return
*/
private static String switchDateFormat(String dateString) {
int length = dateString.length();
switch (length) {
case 19:
if (dateString.contains(MINUS)) {
return DATE_FORMAT_19;
} else {
return DATE_FORMAT_19_FORWARD_SLASH;
}
case 17:
return DATE_FORMAT_17;
case 14:
return DATE_FORMAT_14;
case 10:
return DATE_FORMAT_10;
default:
throw new IllegalArgumentException("can not find date format for:" + dateString);
}
}
/**
* Format date
* <p>
* yyyy-MM-dd HH:mm:ss
*
* @param date
* @return
*/
public static String format(Date date) {
return format(date, null);
}
/**
* Format date
*
* @param date
* @param dateFormat
* @return
*/
public static String format(Date date, String dateFormat) {
if (date == null) {
return "";
}
if (StringUtils.isEmpty(dateFormat)) {
dateFormat = DATE_FORMAT_19;
}
return new SimpleDateFormat(dateFormat).format(date);
}
}
获取指定时间范围列表
/**
* 获取时间方位列表
* @param startDate 开始时间
* @param endDate 结束时间
* @param format 时间格式
* @return
*/
public static List<String> getMonthBetween(LocalDate startDate,LocalDate endDate,String format){
if (StringUtil.isEmpty(startDate) || StringUtil.isEmpty(endDate)){
return null;
}
// 日期格式类
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(format);
Assert.isTrue(startDate.compareTo(endDate) <= 0 ,"startDate必须小于等于endDate");
ArrayList<String> monthBetween= new ArrayList<>();
do {
monthBetween.add(startDate.format(dateTimeFormatter));
startDate = startDate.plusMonths(1);
}while (startDate.compareTo(endDate) <= 0);
return monthBetween;
}
/**
* 获取当前月份的所有天的列表
* @param localDate 指定月份任何一天的时间
* @param format 返回日期格式
* @return
*/
public static List<String> getDayBetween(LocalDate localDate,String format){
LocalDate firstDay, lastDay;
firstDay = localDate.withDayOfMonth(1);
System.out.println(firstDay);
lastDay = firstDay.plusMonths(1).plusDays(-1);
System.out.println(lastDay);
// 日期格式类
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(format);
ArrayList<String> dayBetween= new ArrayList<>();
do {
dayBetween.add(firstDay.format(dateTimeFormatter));
firstDay = firstDay.plusDays(1);
}while (firstDay.compareTo(lastDay) <= 0);
return dayBetween;
}
网友评论